前端分形 mvc 过时了吗?

2015-06-08 09:18:12 +08:00
 sydneyzh

做单页应用,不用backbone等库,自己写个小框架的话
分形mvc过时了吗?

5135 次点击
所在节点    JavaScript
26 条回复
taoche
2015-06-08 17:37:34 +08:00
taoche
2015-06-08 17:39:31 +08:00
backbone 所谓的mvc 的C 是Collection,集合不是控制器目的是不一样的。 backbone的 view层承担了部分Controller的职能, 所以并没有像传统意义上MVC做层次划分。 所以它不是严格意义上的mvc。
taoche
2015-06-08 17:43:33 +08:00
@yangmls 至于backbone的 单向数据绑定, 所以下个定论,backbone的 单向绑定一点都不残废,至于双向数据绑定就向它官网上说的,不需要双向绑定。

react 也说了双向数据绑定在大型应用中容易出现混乱。 前端的概念就是这样,一直再“革命”
yangmls
2015-06-08 20:52:09 +08:00
@taoche angular 的双向绑定是可选的,它也能实现单向绑定,如果拿 backbone 的单向绑定和 angular 的比,那么它就是残废的。

当然 backbone 也能实现完整的单向绑定,但要做的工作很多,几乎是帮 backbone 补坑,当然这不算坑,因为这就是 backbone 的设计思想,Jeremy 大神是个有代码洁癖的人。

如果一个需求,是一个列表,列表有很多 rows,row 里面还有很多 items,那要实现精细的控制,这个工作就非常繁琐,要至少三个 View (list row item),要处理 collection 的 reset 和 add,要处理 model 的 change 和 delete,change 还要细分到 attribute 上,View 还要作手动的关联,数据量上来,你还不能 append,还得用 DocumentFragment 优化。

这不是残废是什么?
yyfearth
2015-06-09 01:44:21 +08:00
@yangmls MVC 并不需要M+V的绑定
只要 M+Template->HTML/DOM 就可以了
或者简单的单项绑定

一般来说双向绑定的框架往往是MVVM

至于MV*框架 是 MVC MVP MVVM 等的总称而已
yyfearth
2015-06-09 01:54:16 +08:00
@yangmls Backbone 本来就不该和 Angular 在这个方面比
而且由于 Angular 是个 MVVM 框架
双向或者单项绑定 并不是发生在View和Model之间 而是 View和View Model之间
Model和View Model还是不一样的
Data binding本来就很少在MVC框架里面支持 一般都是在MVP和MVVM的框架里面提供

而且你看下传统的MVC框架 包括Java的还是全宇宙最好的PHP
他们的模版也不是完全的和Model自动绑定 连单项绑定都不是

所以 Backbone 完全符合MVC的
只是由于它太Light weight 用起来肯定没有其他框架那么方便 只提供最基本的结构
但是你可以整合很多很多的小library或者框架来让整框架变的方便

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/196828

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX