有没有哪位大佬有经验
智能小程序的RJS渲染脚本是干啥的?我如果要使用canvas 必须要使用rjs吗?
Re: 智能小程序的RJS渲染脚本是干啥的?我如果要使用canvas 必须要使用rjs吗?
我先回答一下为啥会有RJS?
由于智能小程序本身是一个双线程交互的框架,js脚本均执行在逻辑层,若遇到频繁的视图交互,线程间通信会有一定的延迟造成视图与交互不同步。
在这个基础上我们加了一个RJS,渲染脚本,RenderScript,只运行在视图层,拥有独立的运行环境,通过暴露api,可以获取封装后的dom实例进行视图方面的操作。
具体可以看我们RJS的官方文档:https://developer.tuya.com/cn/miniapp/f ... api/render
如果要用canvas有两种方式。
- 通过ty.createCanvasContext 创建canvas绘图上下文的CanvasContext对象。
- 在 RJS中通过运行环境APIgetCanvasById来获取canvas对象。
区别 - ty.createCanvasContext运行在逻辑层,通过发送事件的形式通知视图层canvas做相关操作。对canvas的操作需要依赖逻辑层向视图层进行通信。频繁通信意味着性能损耗。如果我们不需要频繁的对canvas进行绘制或不需要使用依赖canvas节点的三方库(如F2),推荐使用这种方式。
- RJS中的脚本运行在视图层,除了参数传递,对canvas节点的操作不依赖逻辑层和视图层通信。你可以在RJS中通过getCanvasById获取到canvas对象。因此,对canvas进行频繁绘制或者需要使用依赖canvas节点的三方库,请将相关逻辑放在RJS中执行。
这些可以明白吗,有问题可以在交流。
LGTM
Re: 智能小程序的RJS渲染脚本是干啥的?我如果要使用canvas 必须要使用rjs吗?
明白了,那我如果只是要做canvas的绘制,不需要对canvas本身做频繁操作或者设置动画的话,完全可以直接在js里面通过调用canvas的api来实现。这样的话就方便很多