【低代码】前端低代码开发日记2_遇到的问题(2)变量绑定
解决完双向绑定的问题,关于变量绑定的问题还有很多没有解决,变量的绑定是困惑我很久的问题,致使我一度想要放弃。
遇到的问题
变量绑定
当我们想要把一个静态页面页面动起来,在Vue中,我们只需要把变量和属性绑定好后,修改变量值就可以看到页面的变化,但是就是变量的绑定的功能给我造成了巨大的困扰。
{"id": "component_nQ-SP","label": "组件","uiType": "component","uiName": "组件","domType": "div","children": [{"uiType": "component","uiName": "h1元素","domType": "h1","children": [{"uiName": "文本","uiType": "text","attrs": [{"label": "内容","key": "textContent","value": "$refs:{\"nodeId\":\"var_z2pah\"}","id": "textContent_Fe8S7"}],"id": "text_J8Sb5","label": "文本_ON6jA"}],"id": "component_hCTZm","label": "h1元素_Oan0q"}],"data": [{"id": "var_z2pah","label": "变量1","key": "var1","value": "测试文本","type": "string","arrayType": "","objectType": ""}],"bind": {"textContent_Fe8S7": "var_z2pah"},
}
我把变量的绑定分了几个难度级:
1.普通难度:
- 组件中整个属性的绑定和整个变量的绑定
在这一层次中,所有值都可以直接通过bind
字段进行绑定,操作相对简单。
2.困难难度:
- 需要绑定某个对象的某个属性。
- 需要绑定数组变量的某个数组项。
对于这些情况,我采用了表达式替换的方式。例如,值以$refs:
开头时,就表示引用了变量。此时没有使用bind
字段,因为它无法有效描述属性的绑定。最初我考虑过使用JSONPath描述,但由于复杂性太高而放弃。
如果绑定的是表达式(而不是直接的变量),如var_1 + 1
,实现难度则会更高。由于涉及到双向绑定时值变化的情形,我没有去实现这一功能。
经过多番思考,我决定使用CodeMirror来维护变量引用。在输入过程中,可以为用户提供提示和高亮功能。尽管这与我最初“所有配置都能通过点击完成”的想法相悖,但为了实现灵活性,我还是选择了这一方式。
体验最新的轻构低代码
账号:test
密码:123456
欢迎试用并给建议,目前BUG比较多