摘要:
本篇主要介绍 MPVC 中的关键组件:Pagelet页面消息的包装类,里面包含更新视图的所需要的信息:Html 代码,插入位置,额外的 Json 数据参考等信息。一个 Pagelet 对应一个前端的构建块,Pagelet 的作用包括:添加、修改构建块删除构建块向构建块发送 Json 消息PageletProcessor解析 Pagelet 里面的信息,并进行处理,完成视图更新。NavigationManager处理虚拟页面切换,并管理 Url 历史。加载一个新页面,可以理解为在一个特定区域内加载一个页面级的 Pagelet,并将原来的页面实例 Dispose 掉。在查看列表类页面时,列表页面不 阅读全文
摘要:
现在设计一个系统,目标为达到以下要求:页面由若干可复用的构建块组件,构建块可以嵌套不同的页面只需要在后台将构建块按层级关系组装在一些即可,无需编写额外的代码在交互过程中,可以刷新某个或某几个构建块来达到更新视图的目的主要面临的挑战为:模块的级联更新问题在用户操作时将引发一系列的模块更新,它们如何同用户操作建立联系,即这种事件订阅关系如何生成?解决方案:对于父子关系的组件,由于构建块之间是层层嵌套的关系,底层的事件可以自然地冒泡到上层组件,但是这种事件传播又不同于 Dom 层面的事件冒泡。对于处于不同子树上的组件,则使用全局事件进行广播(好在这样的情况并不多)。兄弟节点之间的节点或有公共父节点的 阅读全文
摘要:
MPVC 是对 Model Partial-View Controller 的缩写(姑且这样称呼它)。最近看到 MVVM 模式及司徒正美的avalon 框架有一些新的想法。对于 MVVM 的不足有以下考虑:需要在所有模板都要放在前端(也许后端还需要再来一份?)建模只是为了显示需要,哪怕对于不参与逻辑处理的字段都需要进行建模,显得比较麻烦不同的页面需要不同的 VM,维护成本较高对于多页面应用仍然需要编写代码以控制程序工作逻辑最大的美妙之处在于数据模型与视图显示的自动绑定。先抛开 MVC 模式不谈,从头思考下页面的构造与工作流程:对于一个不特定的网页应用来说,页面应该由若干个不同的区块构成,不同的 阅读全文