(笔记整理)Vue入门-概念(1)

领导打算用Vue 开发新的功能(功能已经开发了一部分,用来展现数据功能),自己也开始跟着学vue的相关知识,接触了一段时间,过年回来一放假似乎也忘记的差不多了,现在再回头看,似乎只能再重新开始了,把之前自己记录过的笔记都再重新翻出来,一边复习一边再重新进入学习的状态。到现在似乎连入门的东西还没掌握,以下开始重新整理。

先从概念开始:

Vue.js简介.

Vue.js(读音 /vjuː/, 类似于view)是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
作为前端的三大框架之一(其他两个是Angular、React),Vue得到了大多 前端开发者的青睐,最新版本为2.4.4 。
和其他框架对比,也是各有优劣,相关的介绍,读者可以参考笔者之前的文章:VueJs与其他框架的对比。
总的来说,可以总结为如下:

优点:
简单:官方文档很清晰,比 Angular 简单易学。
快速:异步批处理方式更新 DOM。
组合:用解耦的、可复用的组件组合你的应用程序。
紧凑:~18kb min+gzip,且无依赖。
强大:表达式 & 无需声明依赖的可推导属性 (computed properties)。
对模块友好:可以通过 NPM、Bower 或 Duo 安装,不强迫你所有的代码都遵循 Angular 的各种规定,使用场景更加灵活。
缺点
大而全:学习起来有难度,对于我来讲学习曲线很曲折,比较难理解一些。
推翻重写:Vue重写了部分底层,等于是说在2.0版本又需要从头开始学习,对于习惯了1.x的开发者来说又需要重新学习。
不支持IE8以下,因为Vue使用ES5书写。

MVVM模式
Vue.js 可以说是MVVM 架构的最佳实践,专注于 MVVM 中的 ViewModel,不仅做到了数据双向绑定,而且也是一款相对比较轻量级的JS 库,API 简洁,很容易上手。
所谓MVVM市值Model-View-ViewModel三者的关系。这里可以见到的介绍下MVVM框架:
Observer 数据监听器,能够对数据对象的所有属性进行监听,如有变动可拿到最新值并通知订阅者,内部采用Object.defineProperty的getter和setter来实现。
Compile 指令解析器,它的作用对每个元素节点的指令进行扫描和解析,根据指令模板替换数据,以及绑定相应的更新函数。
Watcher 订阅者, 作为连接 Observer 和 Compile 的桥梁,能够订阅并收到每个属性变动的通知,执行指令绑定的相应回调函数。
Dep 消息订阅器,内部维护了一个数组,用来收集订阅者(Watcher),数据变动触发notify 函数,再调用订阅者的 update 方法。

而在Vue框架中,ViewModel是Vue.js的核心,它是一个Vue实例。Vue实例是作用于某一个HTML元素上的,这个元素可以是HTML的body元素,也可以是指定了id的某个元素。那么ViewModel是如何实现双向绑定的呢?
ViewModel实现双向绑定的原理图
Vue.js 是采用 Object.defineProperty 的 getter 和 setter,并结合观察者模式来实现数据绑定的。
当把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,
用 Object.defineProperty 将它们转为 getter/setter。用户看不到 getter/setter,但是在内部它们让 Vue 追踪依赖,
在属性被访问和修改时通知变化。

从图中可以看出,当执行 new Vue() 时,Vue 就进入了初始化阶段,一方面Vue 会遍历 data 选项中的属性,
并用 Object.defineProperty 将它们转为 getter/setter,实现数据变化监听功能;
另一方面,Vue 的指令编译器Compile 对元素节点的指令进行扫描和解析,初始化视图,并订阅Watcher 来更新视图,
此时Wather 会将自己添加到消息订阅器中(Dep),初始化完毕。当数据发生变化时,Observer 中的 setter 方法被触发,
setter 会立即调用Dep.notify(),Dep 开始遍历所有的订阅者,并调用订阅者的 update 方法,订阅者收到通知后对视图进行相应的更新。

以上的内容,都是在刚开始学习阶段查看的其它大神的记录,用来作为自己的理解入门用,虽然有些内容看完跟没看一样,根本看不太懂,先硬着头皮继续往下看吧,目的是把自己的笔记也整理一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值