简体中文
renderjs
是一个运行在视图层的js。它比WXS更加强大。它只支持app-vue和web。
renderjs
的主要作用有2个:
平台差异说明
App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 抖音小程序、飞书小程序 | QQ小程序 |
---|---|---|---|---|---|---|
√(2.5.5+,仅支持vue) | √ | x | x | x | x | x |
设置 script 节点的 lang 为 renderjs
<script module="test" lang="renderjs">
export default {
mounted() {
// ...
},
methods: {
// ...
}
}
</script>
uni-app的app端逻辑层和视图层是分离的,这种机制有很多好处,但也有一个副作用是在造成了两层之间通信阻塞。尤其是App的Android端阻塞问题影响了高性能应用的制作。
renderjs
运行在视图层,可以直接操作视图层的元素,避免通信折损。
在hello uni-app的canvas示例中,App端使用了renderjs
,由运行在视图层的renderjs
直接操作视图层的canvas,实现了远超微信小程序的流畅canvas动画示例。具体在hello uni-app示例中体验,对比App端和小程序端的性能差异。
官方不建议在uni-app里操作dom,但如果你不开发小程序,想使用一些操作了dom、window的库,其实可以使用renderjs
来解决。
在app-vue环境下,视图层由webview渲染,而renderjs
运行在视图层,自然可以操作dom和window。
这是一个基于renderjs
运行echart完整版的示例:renderjs版echart
同理,f2
、threejs
等库都可以这么用。