林一二2023年07月10日 15:47
- 执行模块完全运行在前端或者是worker里,也可以运行在nodejs上,需要用适配器模式满足这两种情况下的通信对上层来说一致
以文本格式化节点为例
为避免处理两边频繁更新对象导致冲突的可能性,将图的状态分为设置和结果两部分。之后有空闲了再考虑怎么合并以及支持多人协同。
设置对象
类似microsoft/guidance,用handlebarsjs来最终格式化文本。在前端用 Slate 对变量做一个简单封装和自动补全。 前端界面上的节点渲染器展示富文本编辑器,得到用户输入的结果,序列化为handlebar格式的字符串
react前端代码将当前各个节点的序列化结果传给通过props传入的后端连接器实例,它使用初始化时传入的适配器,通过websocket或restapi+sse将结果传给服务器后端
后端也有一个序列化结果,两边保持这个一致,并作为唯一信息源,通过他给实际执行的节点模型赋值
- 现在的服务中,哪些类型是需要从客户端发送过来的,它们可以从现有的UI元素里生成吗
结果对象
运算结果及需要显示的内容,还有一些频繁更新的界面显示状态放在另一个对象,序列化并用相似的方式同步给前端。
- 是否使用immer,加上jsondiffpatch来做,一开始不用管性能问题
涉及到的方法
目前已有
loadRuntimeData
改为使用 noflo-runtime-base 的 fbp protocol 来做了接入NoFlo的Runtime
Undefined widget 'supertag-form'