WXS介绍
WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构。
1、WXS与JS的区别
1.1 WXS 的基础类库:
WXS 只提供给开发者5个基础类库,分别是 console,Math,JSON,Number,Date,以及一些常用的全局变量和全局函数,可以通过文档进行查阅:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxs/07basiclibrary.html
这些 API 虽然数量不多,但已经能满足基本的数据操作要求,而对于复杂的数据操作,比如类定义和继承等,还是需要依靠逻辑层的 JS 脚本完成。
1.2 数组遍历
WXS 里,遍历数组只能通过for
实现,而JS中的for in
和for of
不被支持,对于需要循环处理数据的场景,也可以通过数组的forEach
方法实现遍历:
var ary = [0, 1, 2];
ary.forEach(function(i) {
console.log(i);
})
1.3 变量类型判断
由于WXS先天不支持使用 Array 对象,因此我们平常用于判断数组类型变量的语句[] instanceof Array
也就不能使用了,而typeof []
的输出结果是 "object",并不能满足实际的开发要求。所幸我们还可以使用变量的 「constructor」 属性进行类型判断:
[].constructor === Array //true
1.4 性能差异
如前所说,小程序的架构分成了逻辑层和视图层,WXS 与 JavaScript 还有一个差异在于,它与 WXML 一同们于视图层,运行于同一个线程内,因此减少了跨线程通信的开销。这也是我们之所以优先采用 WXS 处理数据的原因之一。
1.5 平台差异
小程序在Android上,使用V8引擎解析和渲染 JavaScript; 而在iOS上,则是使用 JavaScriptCore,这两者在解析性能的表现上差异比较大,相对来说 V8 的性能比 JSC 要好得多,那么在 IOS 的小程序中,使用脱离 JavaScript 环境的 WXS,就会使性能有更多的提升,这也是WXS文档中提及 “在 iOS 设备上小程序内的 wxs 会比 javascript 代码快 2 ~ 20 倍” 的具体原因。