Vue是什么
官方解釋:Vue是一套用于構(gòu)建用戶界面的漸進式框架,Vue 被設計為可以自底向上逐層應用妙蔗,Vue的核心是只關(guān)注視圖層傲霸,不僅易于上手,還便于與第三方庫或既有項目整合。
漸進式框架的理解
提供足夠的選擇昙啄,并且沒有很多強制性的要求
漸進也可以理解為一步一步的意思穆役,大概意思就是使用Vue的時候,并不需要把整個框架的所有東西都用上跟衅,可以根據(jù)實際情況選擇你需要的部分孵睬。如下圖:
聲明式渲染和組建系統(tǒng)是Vue的核心庫所包含內(nèi)容,而客戶端路由伶跷、狀態(tài)管理掰读、構(gòu)建工具都有專門解決方案。這些解決方案相互獨立叭莫,你可以在核心的基礎上任意選用其他的部件蹈集,不一定要全部整合在一起。
Vue的使用沒有很多強制性的要求,不像Angular那樣雇初,要使用Angular拢肆,還必須得使用它的模塊機制、必須使用它的依賴注入靖诗、 必須使用它的特殊形式定義組件(這一點每個視圖框架都有郭怪,Vue也難以避免)。
自底向上逐層應用
由基層開始做起刊橘,把基礎的東西寫好鄙才,再逐層往上添加效果和功能。
什么是MVVM
MVVM 是Model-View-ViewModel 的縮寫促绵,它是一種基于前端開發(fā)的架構(gòu)模式攒庵,其核心是提供對View 和 Model 的雙向數(shù)據(jù)綁定,這使得Model 的狀態(tài)改變可以自動傳遞給 View败晴,即所謂的數(shù)據(jù)雙向綁定浓冒。
Vue.js 就是一個提供了 MVVM 風格的雙向數(shù)據(jù)綁定的 Javascript 庫,專注于View 層尖坤。它的核心是 MVVM 中的 VM稳懒,也就是 ViewModel。 ViewModel負責連接 View 和 Model糖驴,保證視圖和數(shù)據(jù)的一致性僚祷。Vue會通過DOM Listeners來監(jiān)聽并改變Model層的數(shù)據(jù)。反之贮缕,當Model層的數(shù)據(jù)發(fā)生改變時,也會通過Data Bingings來監(jiān)聽并改變View層的展示俺榆。從而實現(xiàn)雙向數(shù)據(jù)綁定的功能感昼。
聲明式渲染
Vue.js 的核心是一個允許采用簡潔的模板語法來聲明式地將數(shù)據(jù)渲染進 DOM 的系統(tǒng).
直接上代碼:
==代碼1:==
<div id="app">
{{ message }}
</div>
var vm = new Vue({
el: '#app',//el:Vue需要操作的元素節(jié)點
data: {
message: 'Hello Vue!'
}
})
運行頁面:
通過‘el’綁定id為“app”的元素,實際上是將這個元素掛載在名為vm這個Vue實例上罐脊,實現(xiàn)數(shù)據(jù)和DOM的雙向綁定定嗓,也就是說數(shù)據(jù)和DOM都是響應的了蜕琴,想要驗證是否是響應的并不難,打開你的瀏覽器的 JavaScript 控制臺 (就在這個頁面打開)宵溅,并修改 app.message
的值凌简,你將看到上例相應地更新,
例如:
將app里面的message值改為123恃逻,頁面也隨之改變?yōu)?23
看完這一大堆雏搂,還是不明白什么是聲明式渲染,一頭懵~
那聲明式渲染到底是什么呢寇损?其實理解聲明式渲染最好的辦法是對比命令式渲染凸郑,
命令式:一步一步告訴程序如何去做,能否達成結(jié)果取決于開發(fā)者的設計矛市。
聲明式:只告訴程序想要什么結(jié)果芙沥,如何達成由程序保證,開發(fā)者不用關(guān)心浊吏。
這時候回過來看上面的代碼而昨,app.message = "123"的操作只需要改Vue實例里的數(shù)據(jù)就可以了,頁面上是如何根據(jù)這個數(shù)據(jù)渲染為123的我們并不關(guān)心找田。如果使用JQuery的話歌憨,我們需要獲取到元素的id,然后通過操作dom的方式把數(shù)據(jù)賦值給app.innerHTML完成渲染午阵,這些一步一步的過程都需要由我們開發(fā)人員來想躺孝,而聲明式則不需要。