在这里我并不会提供了一个列表出来给你,我主要还是想分享小程序的运行环境对兼容性的一些影响。
首先我们先看下小程序支持哪些平台,微信小程序主要运行在三个端:IOS(IPhone/IPad)、Android和用于小程序开发调试的开发者工具。
必须明确的是:这三个端的小程序代码执行环境以及用于渲染的非原生组件的环境是不同的,根据官网文档,它们如下:
- 在 iOS 上
小程序逻辑层的 javascript 代码运行在 JavaScriptCore 中,视图层是由 WKWebView 来渲染的,环境有 iOS8、iOS9、iOS10;
- 在 Android 上
旧版本,小程序逻辑层的 javascript 代码运行中 X5 JSCore 中,视图层是由 X5 基于 Mobile Chrome 57 内核来渲染的;
新版本,小程序逻辑层的 javascript 代码运行在 V8 中,视图层是由自研 XWeb 引擎基于 Mobile Chrome 67 内核来渲染的
- 在 开发工具上
小程序逻辑层的 javascript 代码是运行在 NW.js 中,视图层是由 Chromium 60 Webview 来渲染的。
从上面来看,环境还是相似的,但还是存在一些差异:
- JavaScript
语法和 API 支持不一致:语法上开发者可以通过开启 ES6
转 ES5
的功能来规避;此外,小程序基础库内置了必要的Polyfill,来弥补API的差异。
- WXSS
渲染表现不一致:尽管可以通过开启样式补全来规避大部分的问题,还是建议开发者需要在 iOS 和 Android 上分别检查小程序的真实表现。
也就意味着,在实际的小程序测试时,必须要根据所采用的技术语言的版本以及小程序基础库等因素来决定如何开展小程序的兼容性测试。
对于小程序基础库方面,可以参见官方文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/project.html#项目设置
开发者可以在此选择任意基础库版本,用于开发和调试旧版本兼容问题。
对于JS API的差异性支持,可以参见官方文档:https://developers.weixin.qq.com/miniprogram/dev/guide/runtime/js-support.html
运行限制基于安全考虑,小程序中不支持动态执行 JS 代码,即:
- 不支持使用 eval
执行 JS 代码
- 不支持使用 new Function
创建函数
对于渲染问题,可以参见:https://developers.weixin.qq.com/miniprogram/dev/devtools/project.html#样式补全
综上所示,在规划小程序兼容性测试时,必须要去调查清楚以下条目:
- 运行环境(ios、android及对应的版本)
- javascript版本,对不同平台的API的支持情况
- 小程序基础库版本
- 设备dpi,影响布局显示
- 微信版本(不同版本对小程序的支持会不一样,个人版微信、企业版微信、车载版微信?等等)
- 业务
- 其他