惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
M
MIT News - Artificial intelligence
G
Google Developers Blog
P
Proofpoint News Feed
Recent Announcements
Recent Announcements
MyScale Blog
MyScale Blog
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
月光博客
月光博客
爱范儿
爱范儿
罗磊的独立博客
腾讯CDC
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗
Vercel News
Vercel News
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog
C
Check Point Blog
美团技术团队
宝玉的分享
宝玉的分享
Microsoft Security Blog
Microsoft Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - 沙加

前端设计模式之 MPVC Part 2 前端设计模式之 MPVC Part 1 App Engine 缓存与数据一致性 常用跨浏览器效果 同步请求真的有那么恐怖? Google Closure 的单元测试纪要 双飞翼布局的选区问题 一个 JS 面试题目 HTML 5 之旅 part 1 - 无头苍蝇 bind, delegate, live 三者的区别 Objective-C 学习笔记 - part 12 - 多线程 Objective-C 学习笔记 - part 11 - 错误处理 Objective-C 学习笔记 - part 10 - 选择器 Objective-C 学习笔记 - part 9 - 静态标记的类型 Objective-C 学习笔记 - part 8 - 快速枚举 Objective-C 学习笔记 - part 7 - 相关引用 Objective-C 学习笔记 - part 6 - 类别与扩展 Objective-C 学习笔记 - part 5 - 申明属性 Objective-C 学习笔记 - part 4 - 协议
前端设计模式之 MPVC Part 3
沙加 · 2013-01-22 · via 博客园 - 沙加

本篇主要介绍 MPVC 中的关键组件:

Pagelet

页面消息的包装类,里面包含更新视图的所需要的信息:Html 代码,插入位置,额外的 Json 数据参考等信息。

一个 Pagelet 对应一个前端的构建块,Pagelet 的作用包括:

  • 添加、修改构建块
  • 删除构建块
  • 向构建块发送 Json 消息

PageletProcessor

解析 Pagelet 里面的信息,并进行处理,完成视图更新。

NavigationManager

处理虚拟页面切换,并管理 Url 历史。

加载一个新页面,可以理解为在一个特定区域内加载一个页面级的 Pagelet,并将原来的页面实例 Dispose 掉。

在查看列表类页面时,列表页面不会因为详细页的对象加载而消息失,而是仅仅隐藏起来并且可以由特别的条件激活,比如 Backspace 或者某个特别的元素点击事件。

NavigationManager 理论上将所有的页面跳转换为 Pagelet 消息加载和处理,达到无刷新的效果。

ClassRegister

为了根据构建块的类型创建它的实例,需要一种类似于 "反射" 的机制来取得目标类型的构造函数或工厂方法,ClassRegister 提供类型字符串到构造函数的映射关系。

页面在构建时的流程

后台在生成页面时,同时生成一个有层次关系的 Map,里面包含了各构建块的父子关系。页面到达客户端之后,从根节点开始,根据此 Map 递归初始化所有的嵌套组件实例,完成页面初始化。

MVPC 的优点

  1. MVPC 不仅提供组件对象系统,同时也包含让它们工作的启动逻辑,而不是一些类型的简单堆砌,它是一个可以工作的完备系统,开发人员只需要专注于组件的编写。
  2. 每个组件原则上只操作它自身 DomScope 以内的元素,具有高内聚的特点,不会污染全局环境,以及最小的 Dom 依赖关系。
  3. 逻辑与表现分离,只通过系列特定的 action-anchor class 来绑定元素事件,对 Dom 结构没有强制性要求和绑定关系。
  4. 高度可复用,相同的组件在不同的地方使用,无须编写额外代 ,后台自动进行组装。
  5. 充分利用继承、多态的优势,组件设计更为优雅。
  6. 利用模块管理器可以实现组件的按需加载,提高前端性能。
  7. 前端不需要使用模板,组件都在服务器端渲染。
  8. 不参与逻辑处理的字段都不需要建模,所有的操作都可以理解为: 操作 -> 页面构建块更新 的过程,在此过程中,前端只需告诉后端当前发生的事件和必要参数,后端渲染好需要更新的部分,发回前端后即自动更新,完成交互过程,前端只需要少量的代码就可以完成复杂的交互效果。

MVPC 的缺点:

  1. 需要手动处理事件的订阅关系
  2. 对于不涉及数据更改的纯前端交互效果需要按传统方式编写代码。