微信小程序主要目录和文件的作用?

project.config.json:项目配置文件,用的最多的就是配置是否开启https校验

App.js:设置一些全局的基础数据等

App.json:底部tab,标题栏和路由等设置

App.wxss:公共样式,引入iconfont等

pages:里面包含一个个具体的页面

index.json:配置当前页面标题和引入组件

index.wxml:页面结构

index.wxss:页面样式表

index.js:页面的逻辑,请求和数据处理

wxml与标准的html的异同?

相同点:都是用来描述页面的结构

都由标签,属性等构成

不同点:标签名字不一样,且小程序标签更少,单一标签更多

多了一些 wx:if 这样的属性以及{{}} 这样的表达式

WXML仅能在微信小程序开发者工具中预览,而HTML可以在浏览器内预览

组件封装不同,WXML对组件进行了重新封装

小程序运行在JS Core内,没有DOM树和windiw对象,小程序中无法使用window对象和document对象。

WXSSCSS的异同?

相同点:都是用来描述页面的样子

不同点:WXSS具有CSS大部分的特性,也做了一些扩充和修改

WXSS新增了尺寸单位,WXSS在底层支持新的尺寸单位rpx

WXSS仅支持部分CSS选择器

WXSS提供全局样式与局部样式

小程序页面之间有哪些传递数据的方法?

使用全局遍历实现数据传递

页面跳转或重定向时,使用url带参数传递数据

使用组件模板 template传递参数

使用缓存传递参数

使用数据库传递参数

给html元素添加data-*属性来传递值,然后通过e.currentTarget.dataset或onload的param参数获取(data- 名称不能有大写字母,不可以存放对象)

设置id 的方法标识来传值,通过e.currentTarget.id获取设置的id值,然后通过设置全局对象的方式来传递数据

在navigator中添加参数数值

小程序的生命周期函数

   App中的:

onLaunch     小程序初始化完成时触发,全局只触发一次

onShow     小程序启动,或从后台进入前台显示时触发

onHide      小程序从前台进入后台时触发

onError              小程序发生脚本错误或 API 调用报错时触发

onPageNotFound           小程序要打开的页面不存在时触发

onUnhandledRejection    小程序有未处理的 Promise 拒绝时触发

onThemeChange          系统切换主题时触发

   页面中的:

onLoad       监听页面加载 发送请求获取数据

onShow      监听页面显示 请求数据

onReady       监听页面初次渲染完成     获取页面元素

onHide       监听页面隐藏 终止任务

onUnload      监听页面卸载       终止任务

   组件中的:

created        监听页面加载

attached         监听页面显示

ready           监听页面初次渲染完成

moved         监听页面隐藏

detached        监听页面卸载

error            每当组件方法抛出错误时执行

简述微信小程序原理

小程序本质就是一个单页面应用,所有的页面渲染和事件处理,都在一个页面内进行,但又可以通过微信客户端调用原生的各种接口;

它的架构,是数据驱动的架构模式,它的UI和数据是分离的,所有的页面更新,都需要通过对数据的更改来实现;

它从技术讲和现有的前端开发差不多,采用JavaScript、WXML、WXSS三种技术进行开发;

功能可分为webview和APPService两个部分,webview主要用来展示UI,appservice用来处理业务逻辑,数据及接口调用,它们在两个进程中进行,通过系统层JSBridge实现通信,实现UI的渲染,事件处理;

webview用来展现UI,appService有来处理业务逻辑、数据及接口调用;

两个部分在两个进程中运行,通过系统层JSBridge实现通信,实现UI的渲染、事件的处理等。

javaScript的代码是运行在微信App中的,因此一些h5技术的应用需要微信APP提供对应的API支持

wxml 微信自己基于xml语法开发的,因此在开发时只能使用微信提供的现有标签,html的标签是无法使用的

wxss具有css的大部分特性,但并不是所有都支持,没有详细文档(wxss的图片引入需要使用外链地址,没有body,样式可以使用import导入)

哪些方法来提高微信小程序的应用速度?

用户行为预测

组件化方案

精简代码,降低WXML结构和JS代码的复杂性;

合理使用setData调用,减少setData次数和数据量

必要时使用分包优化

分析微信小程序的优劣势?

优势:

容易上手,基础组件库比较全,基本不需要考虑兼容问题

开发文档比较完善,开发社区比较活跃,支持插件式开发

良好的用户体验,无需下载,通过搜索和扫一扫就可以打开,打开速度快,安卓上可以添加到桌面,与原生APP差不多

开发成本比APP要低

为用户提供良好的保障(小程序发布,严格是审查流程)

劣势:

限制较多,页面大小不能超过1M,不能打开超过5个层级的页面

样式单一,部分组件已经是成型的,样式不可修改,例如:幻灯片,导航

推广面窄,不能分享朋友圈,只能通过分享给朋友,附加小程序推广

依托与微信,无法开发后台管理功能

后台调试麻烦,因为api接口必须https请求且公网地址

真机测试,个别安卓和苹果表现迥异,例如安卓的定位功能加载很慢

微信小程序和H5的区别?

运行环境不同(小程序在微信运行,h5在浏览器运行)

开发成本不同(h5需要兼容不同的浏览器)

获取系统权限不同(系统级权限可以和小程序无缝衔接)

应用在生成环境的运行速度流程(h5需不断对项目优化来提高用户体验)

小程序关联微信公众号如何确定用户的唯一性?

使用wx.getUserlnfo方法 withCredentials为true时,可获取encryptedData,里面有union_id,后端需要进行对称解密

bindtap和catchtap的区别?

bind事件绑定不会阻止冒泡事件向上冒泡

catch事件绑定可以阻止冒泡事件向上冒泡

简述微信小程序的跳转方式的区别

wx.navigateTo

wx.navigateTo({

url: 'test?id=1',

})

保留当前页面,只能打开非 tabBar 页面。

wx.redirectTo

wx.redirectTo({

url: 'test?id=1'

})

关闭卸载当前页面,只能打开非 tabBar 页面。

wx.switchTab

wx.switchTab({

url: '/index'

})

关闭所有非tabbar页面, 只能打开 tabBar 页面。

wx.reLaunch

wx.reLaunch({

url: 'test?id=1'

})

关闭卸载所有页面,可以打开任意页面。

wx.navigateBack

wx.navigateBack({

delta: 2  //返回的页面数,如果 delta 大于现有页面数,则返回到首页。

})

返回前面的页面,可以指定返回多少页,如果用过redirectTo,那么被关闭的页面将返回不去

路由跳转传参

路由跳转传参可以通过?的方式拼接参数。跳转到指定界面之后,可以在该页面的onLoad方法中的options参数(本身是个对象)拿到路由跳转的参数。

小程序与原生App的比较?

各有各自的优点,都又有缺点

小程序的优点:

基于微信平台开发,享受微信自带的流量,这个优点最大

无需安装,只要打开微信就能用,不占手机内存,体验好

开发周期段,一般最多一个月就可以上线完成

开发所需的资金少,所需资金是开发原生APP的一半不到

小程序名称是唯一的,在微信的搜索里权重很高

容易上手,只要之前有HTML+CSS+JS基础知识,写小程序基本没有大问题

基本不需要考虑兼容性问题,只要微信可以正常运行的机器,就可以运行小程序

发布、审核高效,基本上午发布审核,下午就审核通过,升级简单,支持灰度发布

开发文档完善,社区活跃

支持插件式开发,一些基本功能可以开发成插件,供多个小程序使用

缺点:

局限性很强(比如页面大小不能超过1M,不能打开超过5个层级的页面,样式单一,小程序的部分组件已经是成型的了,样式不能修改,比如幻灯片,导航)只能依赖于微信依托与微信,无法开发后台管理功能

不利于推广,推广面窄,不能分享朋友圈,只能分享给朋友,附近小程序推广,其中附加小程序也收到微信限制

后台调试麻烦,因为API接口必须https请求,且公网地址,也就是说后台代码必须发布到远程服务器上;当然我们可以修改host进行dns映射把远程服务器转到本地,或者开启tomcat远程调试;不管怎么说终归调试比较麻烦

前台测试有诸多坑,最头疼莫过于模拟器与真机显示不一致

js引用只能使用绝对路径,不能操作DOM

原生App优点:

原生的相应速度快

对于有无网络操作时,譬如离线操作基本选用原生开发

需要调用系统硬件的功能(摄像头,拨号,短信蓝牙..)

在无网络或者弱网情况下体验好

原生App缺点:

开发周期长,开发成本高,需要下载

小程序的发布流程(开发流程)

注册微信小程序账号

获取微信小程序的AppID

下载微信小程序开发者工具

创建demo项目

去微信公众号配置域名

手机浏览

代码上传

提交审核

小程序发布

简述微信小程序原理

小程序的页面主要由四部分组成,分别是wxml、wxss、js、json。wxml用于构建用户界面,wxss用于编写界面的样式,js用于编写界面逻辑,json用于界面的配置。

微信的架构,是数据驱动的架构模式,它的 UI 和数据是分离的,所有的页面更新,都需要通过对数据的更改来实现

小程序的渲染层和逻辑层分别由2个线程管理:渲染层的界面使用了WebView 进行渲染;逻辑层采用JsCore线程运行JS脚本。一个小程序存在多个界面,所以渲染层存在多个WebView线程,这两个线程的通信会经由微信客户端(下文中也会采用Native来代指微信客户端)做中转,逻辑层发送网络请求也经由Native转发。

微信小程序的好处和缺点

优势:

入口众多。在微信中,小程序拥有众多入口,例如附近的小程序、小程序码、分享、发现-小程序等五十多个的入口。这些入口有助于企业更好的获取流量,从而进行转化、变现。

使用便捷。用户在使用小程序时,只需要轻轻点一下就可以使用,更加符合用户对使用方便、快捷的需求,所以小程序的用户数量不断增加。

体验良好,有接近原生app的体验。在微信生态里,小程序在功能和体验上是可以秒杀掉 H5 页面的,H5 页面经常出现卡顿、延时、加载慢、权限不足等原因,而这些问题在小程序里都不会出现。

微信助力,容易推广。

成本更低,从开发成本到运营推广成本,小程序的花费仅为APP的十分之一,无论是对创业者还是传统商家来说都是一大优势。

劣势:

大小限制为2M,这导致无法开发大型的应用。

不能直接分享到朋友圈。

需要像app一样审核上架,这点相对于H5的发布要麻烦一些

微信对小程序的开发也有限制

小程序的双向绑定和vue哪里不一样

小程序直接this.data的属性是不可以同步到视图的,必须调用setData

如何给方法传值

通过设置标签的data-*属性,在方法中通过e.currentTarget.dataset获取到数据

小程序常用的接口请求

HTTPS 请求(wx.request)

上传文件(wx.uploadFile)

下载文件(wx.downloadFile)

WebSocket 通信(wx.connectSocket)

小程序如何进行登录

通过wx.login可以获得code。

调用服务端提供的code2Session,可以拿到用户的open_id(唯一id)。

open_id可以和后端的账号关联,后端会根据open_id返回关联的用户信息。

小程序页面跳转如何传递参数

跳转的时候可以在链接后面加上?参数名=参数值

跳转到的页面可以在onLoad的生命周期函数中的options获取到参数

如果被问到taro框架传递参数,在taro组件的生命周期函数中都可以通过this.$router.params 获取到参数

微信小程序使用npm的步骤(外部依赖)

首先在项目根目录执行npm init

根据需要安装相应的组件,这里需要注意的加上--production参数减少安装一些业务无关的包,从而减少整个小程序的大小。

在微信开发工具的本地设置中打开使用npm模块

在微信开发工具的工具菜单栏点击构建npm

谈谈对Behaviors的了解

behaviors 是小程序中,用于实现组件间代码共享的特性,类似于 Vue.js 中的 “mixins”。

每个 behavior 可以包含一组属性、数据、生命周期函数和方法。组件引用它时,它的属性、数据和方法会被合并到组件中。每个组件可以引用多个 behavior,behavior 也可以引用其它 behavior。

调用 Behavior(Object object) 方法即可创建一个共享的 behavior 实例对象,供所有的组件使用:

//调用Behavior()方法,创建实例

// 并使用exports导出

module.exports =  Behavior({

// 属性节点

properties:{},

// 私有数据节点

data:{ usename:'zs'},

// 事件处理函数和自定义方法

methods:{},

// 其他节点

})

在组件中,使用 require() 方法导入需要的 behavior,挂载后即可访问 behavior 中的数据或方法,示例代码如下:

// 引入Behavior实例对象

const myBhavior = require("../../behaviors/behavior")

Component({

// 将导入的myBhavior挂载到behaviors节点上

behaviors:[myBhavior],

})

微信小程序部分知识点总结相关推荐

  1. 微信小程序开发知识点总结

    微信小程序开发知识点总结 微信小程序的目录结构 1.外联公共样式的方法 根据微信的官方文档,是支持@import的方式一如外联的公共样式的 使用@import语句可以导入外联样式表,@import后跟 ...

  2. api 定位 微信小程序 精度_微信小程序开发知识点集锦

    一 小程序的生命周期 代码生命周期就是一个对象的生老病死,通常指程序从创建.开始.暂停.唤起.停止.卸载的过程.小程序的生命周期又可分为应用生命周期和页面的生命周期,先单独分析,在结合两者分析 应用生 ...

  3. 微信小程序+uni-app知识点总结

    微信小程序知识点合集 1. 小程序的优势和劣势有哪些? 优势: (1)容易推广.在微信中,小程序拥有众多入口,例如附近的小程序.小程序码.分享. 发现-小程序等五十多个的入口,这些都有助于推广小程序: ...

  4. 微信小程序一些知识点

    转载自:https://www.jianshu.com/p/f8f85757e90d 配置文件.json: 小程序的全局配置app.json和页面配置page.json 每单页页面也有相应的.json ...

  5. 微信小程序开发知识点

    /*** pages页面组成* -- .js..json..wxml..wxss* * app.json: 全局配置* * WXML: 小程序的标签语言,用来构建小程序的UI结构,类似于HTML但是和 ...

  6. 微信小程序相关知识点和云音乐项目制作遇到的问题及解决

    小程序项目想下载项目的可以下载看看~ 下载地址 github地址: https://github.com/superBiuBiuMan/Wechat_NetEase_CloudMusic gitee地 ...

  7. 微信小程序常见知识点总结

    目录 1.小程序中如何进行接口请求?会不会跨域,为什么 2.小程序的常用命令有哪些 3.你认为微信小程序的优点是什么,缺点是什么 4.微信小程序中的js和浏览器中和node中的区别 5.微信小程序中的 ...

  8. 微信小程序入门知识点

    1.在wxml中只有用text标签包裹的文本才能在手机上长按选中 2.小程序的自适应单位是rpx,一般情况下不要使用px 3.每一个页面都是一个文件夹,下面的wxml.wxss.json.js文件最好 ...

  9. 微信小程序相关知识点

    小程序的双向绑定 <!-- 输入框主要是通过 model:value="{{变量}}" 实现数据的双向绑定 --> <view><view>ke ...

最新文章

  1. ubuntu中启用ssh服务
  2. 李飞飞对话顶级神经科学家纽瑟姆:大脑也做「微积分」,最高效GPU依然很浪费...
  3. 如何使用T-SQL临时禁用外键约束?
  4. 配置nginx下别名alias支持PHP fastcgi解析
  5. 每天一个linux命令:cat
  6. 计算机图形学基础考试题,计算机图形学基础复习题
  7. java-两数倒置后求和
  8. 写个买卖小游戏,第1天(昨天)
  9. html5游戏面试题,关于HTML5的十大面试题
  10. 通过JS函数劫持自定义百度云分享提取码
  11. 去除 火狐浏览器自动给域名前加 www.
  12. Linux系统修改网卡名称(eth1修改为eth0)
  13. YiDB在翼支付账单业务的应用实践
  14. VC浏览器相关的学习(四)(在BHO中获取IE版本以及获取窗体句柄)
  15. Pyinstaller Pmw
  16. Android TextView自动调整字体大小(官方)
  17. php蓝奏云网盘源码,蓝奏云网盘打开目录/上传/下载源码
  18. 学习笔记二:IBIS模型编辑报错纠正
  19. Java学习笔记(九)抽象类
  20. 如何在顶层使用await 【top level await】

热门文章

  1. outlook 发送邮件没有“附件”、“主题”提醒
  2. 写markdown博客如何将截图快速上传到图床——记一个工具插件的实现(windows版 开源)...
  3. 投资热点转向蓝筹股?简直是胡说八道!
  4. 京东顺丰江湖一战,在所难免!
  5. 成功人士做事的重要素养
  6. Android 项目借用华为、小米、VIVO、OPPO等远程真机调试
  7. ChatGPT通过谷歌L3入职测试,拿到18万美元offer?程序员们该何去何从?
  8. C语言修改同花顺程序吗,炒股软件哪家强?第一篇——同花顺
  9. 思科模拟器叫什么_gba模拟器安卓官网版下载
  10. QCC300x笔记(5) -- 外部Flash的读写操作