2023-02-21 22:34:08 +08:00

2.7 KiB
Raw Blame History

WXS

https://developers.weixin.qq.com/miniprogram/dev/reference/wxs/

官方介绍:

WXSWeiXin Script是小程序的一套脚本语言结合 WXML,可以构建出页面的结构。

WXS 与 JavaScript 是不同的语言,有自己的语法,并不和 JavaScript 一致。

那么这个 WXS 究竟要解决什么问题呢?

在前面讲架构篇的时候,我们有讲过微信小程序的架构分为 app-service 和 page-frame分别运行于不同的线程。

你在开发时写的所有 JS 都是运行在 app-service 线程里的,而每个页面各自的 WXML/WXSS 则运行在 page-frame 中。

app-service 与 page-frame 之间通过桥协议通信(包括 setData 调用、canvas指令和各种DOM事件涉及消息序列化、跨线程通信与evaluateJavascript()。

image-20230217110526036

这个架构的好处是:分开了业务主线程和显示界面,即便业务主线程非常繁忙,也不会阻塞用户在 page-frame 上的交互。一个小程序可以有多个 page-frame webview页面间切换动画比SPA更流畅。

但是,这样的架构也不是说没有缺点,该架构的缺点就在于在 page-frame 上无法调用业务 JS。跨线程通信的成本很高,不适合需要频繁通信的场景。业务 JS 无法直接控制 DOM。

因此,针对微信小程序架构的缺点,微信团队推出了 WXS。

WXS 就是在 page-frame 中运行的 JS可以对 view 数据做一些变换。

WXS 对性能的贡献就只有一点:与 WXML 是在同一个线程运行的,避免了跨线程通信的开销

简单来说就是可以在 WXML 里使用 JavaScript。

查看整个官方文档,可以看到官方文档在介绍 WXS 时分为了如下几个部分:

虽然官方强调 WXS 与 JavaScript 是不同的语言,有自己的语法,并不和 JavaScript 一致,但是我们可以看出基本上就是 JavaScript。