应用很复杂,不是单一视图,不是单一逻辑,也不是单一视图 + 单一逻辑。

视图如何组织

首先,视图是什么,视图是符号和结构,什么结构,树形结构,没有其它答案了。

人类接受信息必然是线性的,而内容是有层次的,这是客观规律,这一点决定了“视图必然是树形结构”。

声明式描述视图,代码也必然是树形结构。

应用、页面、组件、元素,无一例外都是树形结构,它们之间是什么关系呢?由左向右复用程度从低到高。

逻辑如何组织

逻辑也根据复用程度划分,复用程度最强的,我称之为“服务”,比如表单服务、表格服务、图表服务、路由服务……这些逻辑不是树形结构,而是网状结构,可以根据实际的业务需要进行组合。

复用程度较低的,没想到什么好名字,暂且称之为“业务服务”,业务服务视项目而定,业务服务一般是树形的,这棵树的形状与项目视图树的形状相同,但不是同一棵树,想象业务服务是一颗树,离我们 10 米远,在它的正前方,离我们 5 米远的地方是视图树,它们形状是相同的,业务服务树与视图树通过 SFC 组件的 script 建立联系。

在《品牌实验室可视化工具》项目中,一个作品分为画布配置、数据配置、图表配置、作品配置,这个模型就是“业务服务”,换一个项目就用不了了。

组件和元素的区别

元素是视图片段,留了空的 Template。

组件是绑定了服务的视图片段,留了一部分空的 Template。

二者并不能够严格区分。