Page 1 of 1

智能小程序的RJS渲染脚本是干啥的?我如果要使用canvas 必须要使用rjs吗?

Posted: 2022年 Oct 28日 14:29
by 智能小程序开发者

有没有哪位大佬有经验


Re: 智能小程序的RJS渲染脚本是干啥的?我如果要使用canvas 必须要使用rjs吗?

Posted: 2022年 Oct 28日 14:47
by Muzzzhi

我先回答一下为啥会有RJS?

由于智能小程序本身是一个双线程交互的框架,js脚本均执行在逻辑层,若遇到频繁的视图交互,线程间通信会有一定的延迟造成视图与交互不同步。
在这个基础上我们加了一个RJS,渲染脚本,RenderScript,只运行在视图层,拥有独立的运行环境,通过暴露api,可以获取封装后的dom实例进行视图方面的操作。

具体可以看我们RJS的官方文档:https://developer.tuya.com/cn/miniapp/f ... api/render

如果要用canvas有两种方式。

  1. 通过ty.createCanvasContext 创建canvas绘图上下文的CanvasContext对象。
  2. 在 RJS中通过运行环境APIgetCanvasById来获取canvas对象。
    区别
  3. ty.createCanvasContext运行在逻辑层,通过发送事件的形式通知视图层canvas做相关操作。对canvas的操作需要依赖逻辑层向视图层进行通信。频繁通信意味着性能损耗。如果我们不需要频繁的对canvas进行绘制或不需要使用依赖canvas节点的三方库(如F2),推荐使用这种方式。
  4. RJS中的脚本运行在视图层,除了参数传递,对canvas节点的操作不依赖逻辑层和视图层通信。你可以在RJS中通过getCanvasById获取到canvas对象。因此,对canvas进行频繁绘制或者需要使用依赖canvas节点的三方库,请将相关逻辑放在RJS中执行。

这些可以明白吗,有问题可以在交流。


Re: 智能小程序的RJS渲染脚本是干啥的?我如果要使用canvas 必须要使用rjs吗?

Posted: 2022年 Oct 28日 14:48
by Muzzzhi

:D :D :D :D :D 楼主真是很会提问,最近有些开发者一直在线程交互频繁的视图间苦恼,正好想分享下这个问题。


Re: 智能小程序的RJS渲染脚本是干啥的?我如果要使用canvas 必须要使用rjs吗?

Posted: 2022年 Oct 28日 16:14
by TheThingX

:lol: :lol: :lol:
有点意思


Re: 智能小程序的RJS渲染脚本是干啥的?我如果要使用canvas 必须要使用rjs吗?

Posted: 2022年 Oct 31日 18:14
by 智能小程序开发者

:o 明白了,那我如果只是要做canvas的绘制,不需要对canvas本身做频繁操作或者设置动画的话,完全可以直接在js里面通过调用canvas的api来实现。这样的话就方便很多