随笔-关于mvc乃至mv*的理解

246 阅读2分钟

前端后未分离的时代

相对于整个后端体系来说,前端更多的是 view 的实现,通过ftl,jsp等不同技术方式与后端服务一起整合为整体项目。

前端端分离之后

分离原因

分工不明确,相互牵扯耦合 开发、维护的成本 举个例子:【一个文案发布后端服务,前端开发起本地启动后端环境等】

分离之后

笔者个人经历:顺着react的东风,直接从jquery到了数据驱动的时代。

所以对mvc的思考一直不深,当大家提到backone.js 学习了其严格的mvc思想 。 好处当然存在: 分层,结构的合理会提升升级维护成本。

前端的特殊性在于: 面向dom编程的特点,很容易围绕dom的view层太厚,一把梭全都与dom相关,反而control层很鸡肋。

因为最终dom修改还在view层实现,舍近求远很无奈。
至于数据流混乱,更是在所难免。 基于dom的数据意识很单薄。

mvp

虽然fe很少使用mvp,但presenter 这一架构很像是 v-m的 灵感来源。
view 层从主动渲染变为被动,这样就降低了其变厚的可能性。

但是这样的话 presenter 这一层又容易变大。 因为要负责关联,渲染等行为。

如何将p降低,只能是封装可复用的操作,例如view与model的映射,我想这就是v-m的一种灵感。 减少手动操作的部分,自然可以将更多的精力放在组织管理上,提升可读性和可维护性。

mvvm的出现

ViewModel通过实现一套数据响应式机制自动响应Model中数据变化; 同时Viewmodel会实现一套更新策略自动将数据变化转换为视图更新;

通过事件监听响应View中用户交互修改Model中数据。

这样在ViewModel中就减少了大量DOM操作代码。

参考文章:juejin.cn/post/684490…

结束语

正如一千个人眼中的哈姆雷特,每个人的理解都是不同的,上面纯属个人体会一家之言,希望对大家有所帮助。每个模式更详细的资料比比皆是,这里就不展开了。