和其他兩大框架相比
vue
是一個(gè) “漸進(jìn)式” 的 JavaScript
mvvm
框架栅迄。
漸進(jìn)式 是指 vue
官方提供了一系列的工具站故,如路由 vue-router
,狀態(tài)樹(shù)管理器 vuex
毅舆,網(wǎng)絡(luò)請(qǐng)求 axios
(非 vue
官方出西篓,純推薦)等。如果您不打算做 SPA
憋活,那么您是不需要 vue-router
的岂津;假如您的頁(yè)面不存在非常復(fù)雜的交互或數(shù)據(jù)遞進(jìn)式體驗(yàn)時(shí),您可能不需要 vuex
... 總之悦即,官方都為開(kāi)發(fā)者考慮好了吮成,少了技術(shù)選型的痛苦。
這里要拿三大框架說(shuō)說(shuō)事辜梳。react
和 vue
相比粱甫,react
官方只提供了核心庫(kù)(core + dom)和路由,其他都需要開(kāi)發(fā)者自行選擇工具庫(kù)(immutable.js
冗美,redux
魔种,mobx
等等)析二,給開(kāi)發(fā)者留下了更多的可能(社區(qū)都有成熟方案了粉洼,2333)。react
可以說(shuō)是 開(kāi)放式 的框架叶摄。
Angular
和 vue
相比属韧,不說(shuō)具體語(yǔ)法,只說(shuō)開(kāi)發(fā)模式蛤吓,Angular
其實(shí)也是一個(gè)漸進(jìn)式的框架宵喂。Angular
包是把所有的功能模塊都集合在一起,但實(shí)際上会傲,這些功能模塊都是各自獨(dú)立的小模塊锅棕,如 forms
表單模塊拙泽,雙向綁定就出自這 model
;core
模塊是 Angular
的核心模塊裸燎,如組件裝飾構(gòu)造器 Component
顾瞻;還有 http
模塊提供網(wǎng)絡(luò)請(qǐng)求功能等等。其實(shí) Angular
也沒(méi)有很重量德绿,它只是提供了一個(gè)大而全的解決方案荷荤。所以,我認(rèn)為 Angular
是一個(gè) 集中式 的前端框架移稳。
響應(yīng)式原理
vue
是一個(gè)響應(yīng)式的 mvvm
框架蕴纳,那它的 響應(yīng)式 表現(xiàn)在哪呢?
我們知道个粱,vue
只支持 IE9
及以上瀏覽器(不包含動(dòng)畫(huà))古毛,最主要的一個(gè)點(diǎn)是因?yàn)橐粋€(gè) ES5
對(duì)象的靜態(tài)方法 Object.defineProperty
。Object.defineProperty
可以定義對(duì)象屬性的 getter/setter
几蜻,vue
在這對(duì)屬性里加入了觀察者代碼喇潘,當(dāng)對(duì)象屬性被修改時(shí),vue
會(huì)追蹤變化并告知依賴(lài)組件去更新實(shí)時(shí)的值梭稚。具體就是由下面的幾個(gè)功能模塊來(lái)實(shí)現(xiàn)的:
-
Observer
數(shù)據(jù)監(jiān)聽(tīng)器:能夠?qū)?shù)據(jù)對(duì)象的所有屬性進(jìn)行監(jiān)聽(tīng)颖低,如有變動(dòng)可拿到最新值并通知訂閱者,內(nèi)部采用Object.defineProperty
的getter
和setter
來(lái)實(shí)現(xiàn)弧烤。 -
Compile
指令解析器:它的作用對(duì)每個(gè)元素節(jié)點(diǎn)的指令進(jìn)行掃描和解析忱屑,根據(jù)指令模板替換數(shù)據(jù),以及綁定相應(yīng)的更新函數(shù)暇昂。 -
Watcher
訂閱者莺戒, 作為連接Observer
和Compile
的橋梁,能夠訂閱并收到每個(gè)屬性變動(dòng)的通知急波,執(zhí)行指令綁定的相應(yīng)回調(diào)函數(shù)从铲。 -
Dep
消息訂閱器,內(nèi)部維護(hù)了一個(gè)數(shù)組澄暮,用來(lái)收集訂閱者(Watcher
)名段,數(shù)據(jù)變動(dòng)觸發(fā)notify
函數(shù),再調(diào)用訂閱者的update
方法泣懊。
對(duì)開(kāi)發(fā)者來(lái)說(shuō)伸辟,mvvm
是一種非常省心的開(kāi)發(fā)模式,我們只需要關(guān)注 view
和 model
的對(duì)應(yīng)關(guān)系即可馍刮,不用在乎兩者是怎么保持對(duì)應(yīng)一致的關(guān)系信夫,因?yàn)榭蚣芏继嫖覀冏龊昧恕?/p>
mvvm
框架必須注意保持model
和view
間的一致性,這意味著操作真實(shí)dom
是一種很危險(xiǎn)的行為,會(huì)破壞dom
和vdom
的一致性静稻。在您未有十足的把握前警没,請(qǐng)不要操作真實(shí)dom
。