前端设计模式之 MPVC Part 1

本文探讨了一种新的网页应用架构模式MPVC(ModelPartial-ViewController),并对比分析了MVVM模式的局限性。作者提出了一种模块化的方法来解决前端开发中常见的问题,如视图更新的重复性和代码与DOM元素的强绑定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MPVC 是对 Model Partial-View Controller 的缩写(姑且这样称呼它)。

最近看到 MVVM  模式及司徒正美的 avalon 框架有一些新的想法。对于 MVVM 的不足有以下考虑:

  • 需要在所有模板都要放在前端(也许后端还需要再来一份?)
  • 建模只是为了显示需要,哪怕对于不参与逻辑处理的字段都需要进行建模,显得比较麻烦
  • 不同的页面需要不同的 VM,维护成本较高
  • 对于多页面应用仍然需要编写代码以控制程序工作逻辑

最大的美妙之处在于数据模型与视图显示的自动绑定。

先抛开 MVC 模式不谈,从头思考下页面的构造与工作流程:

  • 对于一个不特定的网页应用来说,页面应该由若干个不同的区块构成,不同的区块按功能区域划分
  • 对于不同的页面,由不同的功能区块组合而成
  • 网页应用为了追求用户体验会使用 Ajax 技术仅更新一部分的页面内容,这个过程可以抽象为功能区块的视图刷新、添加、删除

一般在简单的应用开发中会写出这样的代码:

$.get('/action_url', function(result){
   $('#result_panel').innerHTML(result);
});

在视图更新的时候需要重复此过程,并且会带来其它的一些问题:

  • $('#result_panel')将代码逻辑与 Dom 元素作了强绑定,由于 ID 的唯一性限定了这样的代码块只能用于单例模式中
  • $('.action-hook-class') 则污染了全局空间,在不需要启动此特性的页面需要进行不必要的 Selector 扫描,要启用、禁用此特性的话需要额外的控制开关逻辑。

而模块化的代码编写可以避免这些问题:$('.result-panel', contextScope) 或 $('.action-hook-class', contextScope) 显得友好得多。

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值