运行环境差异
微信小程序运行在三端:iOS、Android 和 用于调试的开发者工具。
三端的脚本执行环境以及用于渲染非原生组件的环境是各不相同的:
- 在 iOS 上,小程序的 javascript 代码是运行在 JavaScriptCore 中,是由 WKWebView 来渲染的,环境有 iOS8、iOS9、iOS10
- 在 Android 上,小程序的 javascript 代码是通过 X5 JSCore来解析,是由 X5 基于 Mobile Chrome 53/57 内核来渲染的
在 开发工具上, 小程序的 javascript 代码是运行在 nwjs 中,是由 Chrome Webview 来渲染的
尽管三端的环境是十分相似的,但是还是有些许区别:ES6 语法支持不一致语法上开发者可以通过开启 ES6 转 ES5 的功能来规避。详情
wxss 渲染表现不一致尽管可以通过开启样式补全来规避大部分的问题 详情,还是建议开发者需要在 iOS 和 Android 上分别检查小程序的真实表现。
客户端ES6 API 支持情况
微信小程序已经支持了绝大部分的 ES6 API,具体表格如下:
- tip: TBS 3.0 是指微信小程序 Android 运行环境
- tip: Array.values 不支持
- tip: Proxy 不支持
String | iOS8 | iOS9 | iOS10 | TBS3.0 |
---|---|---|---|---|
codePointAt | ||||
normalize | ✘ | ✘ | ||
includes | ||||
startsWith | ||||
endsWith | ||||
repeat | ||||
String.fromCodePoint |
Array | iOS8 | iOS9 | iOS10 | TBS3.0 |
---|---|---|---|---|
copyWithin | ||||
find | ||||
findIndex | ||||
fill | ||||
entries | ||||
keys | ||||
values | ✘ | ✘ | ||
includes | ✘ | |||
Array.from | ||||
Array.of |
Number | iOS8 | iOS9 | iOS10 | TBS3.0 |
---|---|---|---|---|
isFinite | ||||
isNaN | ||||
parseInt | ||||
parseFloat | ||||
isInteger | ||||
EPSILON | ||||
isSafeInteger |
Math | iOS8 | iOS9 | iOS10 | TBS3.0 |
---|---|---|---|---|
trunc | ||||
sign | ||||
cbrt | ||||
clz32 | ||||
imul | ||||
fround | ||||
hypot | ||||
expm1 | ||||
log1p | ||||
log10 | ||||
log2 | ||||
sinh | ||||
cosh | ||||
tanh | ||||
asinh | ||||
acosh | ||||
atanh |
Object | iOS8 | iOS9 | iOS10 | TBS3.0 |
---|---|---|---|---|
is | ||||
assign | ||||
getOwnPropertyDescriptor | ||||
keys | ||||
getOwnPropertyNames | ||||
getOwnPropertySymbols |
Other | iOS8 | iOS9 | iOS10 | TBS3.0 |
---|---|---|---|---|
Symbol | ||||
Set | ||||
Map | ||||
Proxy | ✘ | ✘ | ✘ | |
Reflect | ||||
Promise |
原文:
https://developers.weixin.qq.com/miniprogram/dev/devtools/details.html