从 0 诞生,破茧成蝶:手把手造轮子之 MVVM(一)
2024-01-03 05:40:08
走近技术世界的无垠之境,我们踏上了一个令人惊叹的旅程,目标是锻造自己的前端框架,类似于久负盛名的 Vue.js。这系列文章将作为造轮子的日记,从零开始,一步步探索 MVVM 架构的奥秘。
为何是 0.5?因为在踏上这段造轮之旅之前,我们已经翻山越岭,搜罗了海量资料,吸取了前人的智慧。0.5 恰如其分地代表了我们站在巨人的肩膀上,眺望更高的山峰。
选择 Vue.js 作为学习对象,一方面归功于其丰富的参考资料,另一方面源于工作中与 Vue.js 的紧密接触。暂时搁置 React,为的是以后更好地拾起它的碎片,填补我们的知识版图。
MVVM:揭开黑盒的秘密
MVVM,即模型-视图-视图模型,是一套经典的前端架构模式,它的身影活跃在 Vue.js、Angular 和 Knockout.js 等众多框架之中。MVVM 的精髓在于将应用的数据模型、视图和视图模型解耦,实现数据和视图的双向绑定,让数据驱动视图的实时更新。
在 Vue.js 中,数据模型被封装在 Vue 实例中,视图是 HTML 模板,而视图模型则由 Vue 实例的数据和方法组成。当数据模型发生变化时,视图模型会自动更新视图,保证数据和视图的同步。这种机制大大简化了前端开发,开发者无需再手动操纵 DOM,而是专注于数据的管理。
迈出第一步:从数据绑定开始
如同造轮子从车轴开始,我们也要从 MVVM 的核心——数据绑定着手。数据绑定就是将数据模型和视图关联起来,当数据模型发生变化时,视图能够自动更新。在 Vue.js 中,数据绑定通过双花括号 {{ }} 实现,可以将数据模型中的数据直接插入到 HTML 模板中。
例如:
<div>{{ message }}</div>
当 message 数据更新时,视图中的内容也会随之更新。这种双向绑定极大地提升了开发效率,让开发者可以专注于业务逻辑,不必为 DOM 操作而烦恼。
搭建骨架:从响应式数据到发布-订阅模式
为了让数据模型具备响应式能力,Vue.js 采用了代理模式,对数据对象进行劫持,当数据发生变化时触发响应。在幕后,Vue.js 使用发布-订阅模式来监听数据的变化,并通知视图进行更新。
发布-订阅模式是一种设计模式,允许对象(发布者)发布事件,而其他对象(订阅者)订阅这些事件。当发布者触发事件时,所有订阅者都会收到通知,并执行相应的处理逻辑。
总结:从雏形到蓝图
从数据绑定到响应式数据再到发布-订阅模式,我们逐步搭建起了 MVVM 架构的骨架。尽管这只是造轮子的第一步,但我们已经勾勒出了一个清晰的蓝图,为后续的深入探索指明了方向。
下一篇文章中,我们将深入研究 Vue.js 的核心组件:虚拟 DOM。虚拟 DOM 是 MVVM 架构中至关重要的概念,它将数据模型的变更高效地转化为视图的更新,极大地提升了渲染性能。敬请期待!