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

小程序开发相关产品技术讨论,包括面板、智能小程序、React Native、Ray跨端框架、Panel SDK、微信小程序、小程序开发工具(IDE)及其他开发技术相关等话题


Post Reply
智能小程序开发者
Posts: 201

有没有哪位大佬有经验

User avatar
Muzzzhi
Posts: 86

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

我先回答一下为啥会有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中执行。

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

:geek: :ugeek: :mrgreen: :roll: :lol: :idea: :arrow: LGTM

User avatar
Muzzzhi
Posts: 86

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

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

:geek: :ugeek: :mrgreen: :roll: :lol: :idea: :arrow: LGTM

User avatar
TheThingX
Posts: 65
Location: TheThingX
Contact:

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

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

[][TheThingX.com]
智能小程序开发者
Posts: 201

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

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

Post Reply