运行环境
小程序的运行环境
智能小程序运行在三端:iOS、Android 和 用于调试的开发者工具。
三端的脚本执行环境以及用于渲染非原生组件的环境是各不相同的:
iOS
- 旧版本,小程序的逻辑层、视图层,均运行在 webview 中,并进行渲染。
- 新版本,小程序的逻辑层的 js 代码运行在 jscore 中,视图层在 webview 中渲染。
Android
- 旧版本,小程序的逻辑层、视图层,均运行在 webview 中,并进行渲染。
- 新版本,小程序的逻辑层的 js 代码运行在 V8 中,视图层基于自研的 T7 内核在 webview 渲染。
开发工具
小程序逻辑层的 javascript 代码是运行在 electron 中,视图层是由 Chromium 59.0.3071.115 Webview 来渲染的。
平台差异
尽管三端的环境是十分相似的,但是还是有些许区别,例如 ES6、CSS 的差异,还是建议开发者需要在 iOS 和 Android 上分别检查小程序的真实表现。
开发者工具仅供调试使用,最终的表现以客户端为准。
ES6 支持情况
智能小程序基础库内置了 polyfill 的解决方案,已经支持了绝大部分的 ES6 API。具体如下:
- es7.array.includes
- es6.array.find-index
- es6.array.from
- es6.array.find
- es6.array.fill
- es6.array.copy-within
- es6.object.get-own-property-descriptor
- es7.object.entries
- es6.object.assign
- es7.object.values
- es6.math.asinh
- es6.math.atanh
- es6.math.cbrt
- es6.math.expm1
- es6.math.clz32
- es6.math.cosh
- es6.math.fround
- es6.math.hypot
- es6.math.log1p
- es6.math.log2
- es6.math.log10
- es6.math.sign
- es6.math.sinh
- es6.math.tanh
- es6.math.trunc
- es6.string.from-code-point
- es6.string.code-point-at
- es6.string.starts-with
- es6.string.ends-with
- es6.string.includes
- es6.string.repeat
- es7.string.pad-start
- es7.string.pad-end
- es6.regexp.flags
- es6.map
- es6.weak-map
- es6.set
- es6.weak-set
- es6.symbol
- es6.reflect.apply
- es6.reflect.construct
- es6.reflect.define-property
- es6.reflect.delete-property
- es6.reflect.get
- es6.reflect.get-own-property-descriptor
- es6.reflect.get-prototype-of
- es6.reflect.has
- es6.reflect.is-extensible
- es6.reflect.own-keys
- es6.reflect.prevent-extensions
- es6.reflect.set
- es6.reflect.set-prototype-of
- es7.promise.finally
- es6.array.iterato
其他不在列表中说明的新特性,例如 await async等,目前暂不支持。