微信小程序的特点
- 与web相比,入口不同
- 主要都是基于传统的前端技术,以JavaScript语言为主
- 与APP相比,学习门槛和开发成本低
- 不需要下载和安装
- 相比H5,小程序受限微信运营规范,不像H5页面那么灵活,但它可以做一些H5做不了的事,比如订阅,直接转发消息给好友等
小程序的开发能力
依托于微信的宿主环境,除了常用的UI组件及网络API之外,在设备能力上,凡微信有的能力,例如振动,监听网络状态,罗盘,小程序都有,此外,在运营上开发的能力有一下8点比较值得关注的:
- 小程序和公众号可重名
- 小程序开放群相关能力
- 小程序“附近小程序”功能
- 小程序“星标”功能
- 小程序可关联500个公众号
- 可以直接打开网页
- 小程序灰度更新和线上版本回退功能
- 小程序客服能力配置
开发小程序的一般流程
- 注册
- 小程序信息完善
- 开发小程序
- 提交审核和发布
小程序运行机制简介
1、启动机制:冷启动、热启动
2、启动方式
3、两种状态
与小程序冷、热启动相关的,是小程序的两种状态:
- 前台状态
- 后台状态
4、双线程架构
为了安全和管控,小程序使用双线程执行:视图线程和逻辑线程。
- View 视图线程
- App Service 逻辑线程
5、WXS - WXS运行环境与其他JS代码是隔离的,不能调用JS代码里的函数,也不能调用WX-API接口
- WXS函数不能作为视图模板中的事件回调句柄
- WXS在iOS设备上比JS快2-20倍
6、视图线程
与小程序有关的编译器有两个:wcc和wcsc
wcsc是WXSS编译器,负责将WXSS文件编译成JavaScript代码
7、原生组件永远是放在一般视图组件的上面
8、逻辑线程
9、逻辑线程生命状态
逻辑线程4个状态
- 初始化状态
- 等待激活状态
- 激活状态
- 后台运行状态
10、总结
小程序采用的是双线程架构,一个线程负责视图的渲染,一个线程负责业务逻辑的处理。
两个线程都通过WeixinJSBridge与微信Native底层进行通讯,包括两者之间进行的事件与数据的交换也是通过它完成的。
所有平台能力,硬件能力也是通过WeixinJSBridge间接提供的,
由于setData在频繁更新和大数据更新上有瓶颈,影响渲染效率,所以微信引入了WXS编程语言。
一般开发从后端接口接收回来的初始化数据,在页面onload之前就塞在Data数据之中,用于数据的初始化渲染,后续的视图交互与更新如果不与后台有关,就使用WXS语言,直接在视图里进行完成。
开发环境配置
注册小程序:
https://mp.weixin.qq.com/
开发——开发设置里面有AppID(小程序ID),复制到创建小程序的AppID里面
新建一个page文件会出现4个文件:
- js文件主要写JavaScript代码
- json文件主要是对这个页面进行一些配置
- wxml这个文件主要是放置组件代码
- wxss是放置样式代码