当前位置: 首页 > Web前端 > HTML5

React可视化开发工具ShadowWidget非正式介绍(第五部分:教学界面设计)

时间:2023-04-05 14:52:23 HTML5

本系列博文从ShadowWidget作者的角度讲解框架的设计要点。本文讲解ShadowWidget类Vue控制命令,涉及命令界面设计。1.指令界面设计Vue和Angular都支持使用控制指令来描述界面。比如Vue中循环创建多个节点:{{index}}{{item.message}}

Angular也有控制指令像v-for、v-if、v-else等,对快速定义用户界面很有用,而React需要用JS编程实现类似的功能,方便直观,不如Angular和Vue。ShadowWidget通过引入可计算属性和MJI解释器弥补了React中的这一差距。2.在节点引用界面设计中,经常需要根据一个组件的样式复制多个组件,比如下面的btn2按钮,保持和btn1相同的样式:Test1Test2ShadowWidget的escape标签也使用$=xx属性来表示节点引用,与指定的WTC类(如上面的$=Button)不冲突,因为在表达引用时,字符串值必须是路径格式,首字母必须是'.'或者'/',在表示WTC类时,首字母不能是这两个。系统可以自动识别这两种用法。用于路径引用时,我们习惯用引号括起来,但是用作WTC类时,不要加引号(不用担心,浏览器会自动将其视为字符串),这样写就清楚了了解。3、使能解释执行的上下文环境控制指令是可计算属性之一,是借助MJI(MiniJavascriptInterpreter)解释器通过脚本表达式动态解析和计算的属性。例如:测试1这里$html是一个可计算的属性,这段代码的效果和之前一样。需要注意的是,computable属性只有在启用了MJI解释运行时环境后才会生效,否则它只是一个普通的字符串。说明运行环境按需动态开启,用完自动销毁。只有在这个环境下,MJI才能维护脚本计算的上下文操作关系。打开解释运行环境有几种方法:创建一个引用$=path,如上例,如果引用的位置不存在解释运行环境,系统会自动创建一个。使用$for=expr或$$for=expr将一层调用空间压入栈中,系统会自动检测是否有解释型运行环境,如果没有则自动创建。使用$for=''开启一个调用空间,如果没有解释运行环境,系统会自动创建。4.栈式调用空间类似于常规编程语言。MJI解释操作环境也有一个调用堆栈。$for循环使用一组项目、索引和计数变量。多个$for循环嵌套以形成多组项目。index、count变量的栈结构。在MJI解释运行时环境中,一级调用空间中的变量使用如下:props(0).attrduals(0).attrstate(0).attritem(0)index(0)count(0)或者缩写如下:props.attrduals.attrstate.attritemindexcount如果读取栈上层的变量:props(-1).attrduals(-1).attrstate(-1)。attritem(-1)index(-1)count(-1)再往上一层,用-2表示,以此类推。5.举个例子=duals(-1).required'$html='item.name+"旧"'>
运行效果如下:本例包含比较集中的知识点,讲解几个重点:使用$for=''开启一个计算环境进行解释和执行。下面的$for='iteminduals.data'会进入下一层,将当前调用空间压入栈中。内层$for中的可计算属性应该引用上层调用空间,这样写:duals(-1).required$if和$else也是控制指令,有条件地显示特定节点。还有一个$elif没有提到,意思是“elseif”,用法类推。$for用于表示循环生成的节点,必须显式指定key值,如本例中的$key="if_"+index和$key="el_"+index,其中index为循环数,依次取值0、1、2...6。更多功能本系列博文提供引导式介绍,省略太多细节。关于命令式接口设计的内容,比较重要的有:为$for组件的子成员提供过滤、排序等功能可计算表达式可用于异步计算,如发起ajax调用提供flex布局面板,方便快速可视化构建页面支持模板定义(TempPanel、TempDiv),方便自定义引用和批量引用。使用导航面板和选项组件快速构建列表导航、分页导航等应用。导航面板也针对绝对路径进行了分段,使其下层节点可以使用“./xx”或“../../xx”相对路径进行引用。选项小部件支持弹出浮窗,支持触发器等,详情请阅读《Shadow Widget 用户手册》。本专栏历史文章:介绍一种让React与Vue竞争的技术React可视化开发工具ShadowWidget非正式介绍(一:React三宗罪)React可视化开发工具ShadowWidget非正式介绍(二:分离界面设计)React可视化开发工具ShadowWidget非正经介绍(第三部分:双源属性和数据驱动)React可视化开发工具ShadowWidget非正经介绍(第四部分:flux、mvc、mvvm)