小程序开发踩坑集
小程序本质上仍然是一个 web 应用,整体的代码是存储在微信的服务器上的。手机在微信客户端点击一个小程序的连接,微信向服务器发起请求,拉取小程序的代码(页面以及逻辑代码),依托于微信客户端提供的运行时环境,完成他的功能。
微信小程序架构
与传统网页开发的区别:
- 渲染层和逻辑层分离;
- 没有完整的浏览器对象,无法调用 DOM API 和 BOM API;
小程序不同运行环境的区别:
| 运行环境 | 逻辑层 | 渲染层 |
|---|---|---|
| IOS | JavaScriptCore | WKWebView |
| 安卓 | V8 | chromium 定制内核 |
| 小程序开发工具 | NWJS | Chrome WebView |
起步准备
由于本人只开发过个人小程序账号,所以下面的流程不保证企业小程序也有效; 微信公众平台注册账号,注意已有公众号的个人账户无法申请绑定小程序,只能用新邮箱再注册一个账号来开发小程序;
代码构成
- JSON:一般做配置说明文件用,比如引用什么组件、TabBar 什么样式;
- WXML:布置页面结构用,类似于 HTML,但又自成体系,标签和 HTML 不通用;
- CSS:样式文件,同网页开发;
- JS:工作在逻辑层的 JavaScript 脚本;
- WXS:工作在渲染层的脚本语言,与 JS 是不同的语言,仅有部分语法相似,能完成的功能比较简单;(可选项)
局部和全局:
Page vs. Component
注册简单的页面一般使用 Page ,不用做太多的属性配置;
注册复杂功能的页面推荐使用 Component ,能支持更高级的一些特性,如页面间的属性,方法的共享 ( behavior 特性)
动画的实现方式
- canvas
- WXS
- css3
三种方式各自都有局限性, canvas 能实现的功能最复杂,但不适合实现简单的动画(代码也会相应得很复杂) css3 符合传统 Web 的实现方式,编码可移植,WXS 为腾讯自有的脚本体系,现如今更新比较少,能支持的动画也相对较少。
canvas 2d
微信小程序为了解决原生组件无法同级渲染(即默认在顶级展示,无法遮盖)的问题,推出了 canvas 2d 组件;
<!-- 待补充 -->