Vue
Vue是一個前端js框架芋齿,由尤雨溪開發(fā)逻翁,是個人項目 目前由餓了么ude團(tuán)隊進(jìn)行維護(hù)
Vue近幾年來特別的受關(guān)注,三年前的時候angularJS霸占前端JS框架市場很長時間歉铝,接著react框架橫空出世宿亡,因為它有一個特性是虛擬DOM碑诉,從性能上碾軋angularJS彪腔,這個時候,vue1.0悄悄的問世了进栽,它的優(yōu)雅德挣,輕便也吸引了一部分用戶,開始收到關(guān)注快毛,16年中旬格嗅,VUE2.0問世番挺,這個時候vue不管從性能上,還是從成本上都隱隱超過了react屯掖,火的一塌糊涂玄柏,這個時候,angular開發(fā)團(tuán)隊也開發(fā)了angular2.0版本贴铜,并且更名為angular粪摘,吸收了react、vue的優(yōu)點绍坝,加上angular本身的特點徘意,也吸引到很多用戶,目前已經(jīng)迭代到5.0了轩褐。
學(xué)習(xí)vue是現(xiàn)在前端開發(fā)者必須的一個技能椎咧。
前端js框架到底在干嘛,為什么要用
js框架幫助開發(fā)者寫js邏輯代碼把介,在開發(fā)應(yīng)用的時候js的功能劃分為如下幾點:
渲染數(shù)據(jù)
操作dom(寫一些效果)
操作cookie等存儲機(jī)制api
在前端開發(fā)中勤讽,如何高效的操作dom、渲染數(shù)據(jù)是一個前端工程師需要考慮的問題劳澄,而且當(dāng)數(shù)據(jù)量大地技,流向較亂的時候,如何正確使用數(shù)據(jù)秒拔,操作數(shù)據(jù)也是一個問題
而js框架對上述的幾個問題都有自己趨于完美的解決方案莫矗,開發(fā)成本降低。高性能高效率砂缩。唯一的缺點就是需要使用一定的成本來學(xué)習(xí)作谚。
Vue官網(wǎng)介紹
vue是漸進(jìn)式JavaScript框架
vue的主張較弱
“漸進(jìn)式框架”和“自底向上增量開發(fā)的設(shè)計”是Vue開發(fā)的兩個概念
Vue可以在任意其他類型的項目中使用,使用成本較低庵芭,更靈活妹懒,主張較弱,在Vue的項目中也可以輕松融匯其他的技術(shù)來開發(fā)双吆,并且因為Vue的生態(tài)系統(tǒng)特別龐大眨唬,可以找到基本所有類型的工具在vue項目中使用
特點:易用(使用成本低),靈活(生態(tài)系統(tǒng)完善好乐,適用于任何規(guī)模的項目)匾竿,高效(體積小,優(yōu)化好蔚万,性能好)
Vue是一個MVVM的js框架岭妖,但是,Vue 的核心庫只關(guān)注視圖層,開發(fā)者關(guān)注的只是m-v的映射關(guān)系
Vue的使用
Vue不支持IE8昵慌,因為使用了ES5的很多特性 //Object.defineProperty(_data,"msg",{get(),set()}) _data.msg
可以直接通過script標(biāo)簽來引入vue.js假夺,有開發(fā)版本和生產(chǎn)版本,開發(fā)版本一般我們在開發(fā)項目的時候引入斋攀,當(dāng)最后開發(fā)完成上線的時候引入生產(chǎn)版本已卷,開發(fā)版本沒有壓縮的,并且有很多提示蜻韭,而生產(chǎn)版本全部刪掉了
在Vue中提供了一個腳手架(命令行工具)可以幫我們快速的搭建基于webpack的開發(fā)環(huán)境...
Vue的實例
每一個應(yīng)用都有一個根實例悼尾,在根實例里我們通過組件嵌套來實現(xiàn)大型的應(yīng)用
也就是說組件不一定是必須的,但是實例是必須要有的
在實例化實例的時候我們可以傳入一個肖方;配置項闺魏,在配置項中設(shè)置很多屬性方法可以實現(xiàn)復(fù)雜的功能
在配置中可以設(shè)置el的屬性,el屬性代表的是此實例的作用范圍
在配置中同過設(shè)置data屬性來為實例綁定數(shù)據(jù)
mvc/mvvm
mvc 分為三層俯画,其實M層是數(shù)據(jù)模型層析桥,它是真正的后端數(shù)據(jù)在前端js中的一個映射模型,他們的關(guān)系是:數(shù)據(jù)模型層和視圖層有映射關(guān)系艰垂,model改變泡仗,view展示也會更改,當(dāng)view產(chǎn)生用戶操作或會反饋給controller猜憎,controller更改model娩怎,這個時候view又會進(jìn)行新的數(shù)據(jù)渲染
MVVM:
MVVM和MVP及其相似,在Vue中胰柑,使用了雙向綁定技術(shù)截亦,就是View的變化能實時讓Model發(fā)生變化,而Model的變化也能實時更新到View柬讨。
v-for
這是一個指令崩瓤,只要有v-的就是指令(directive 操作dom )
在vue中可以通過v-for來循環(huán)數(shù)據(jù)的通知循環(huán)dom,語法是item in/of items踩官,接收第二個參數(shù)是索引 (item,index) of items,還可以循環(huán)鍵值對却桶,第一個參數(shù)是value,第二個是key蔗牡,第三個依然是索引
v-on
在vue中還有v-on來為dom綁定事件颖系,在v-on:后面加上要綁定的事件類型,值里可以執(zhí)行一些簡單javascript表達(dá)式:++ -- = ...
可以將一些方法設(shè)置在methods里辩越,這樣就可以在v-on:click的值里直接寫方法名字可以嘁扼,默認(rèn)會在方法中傳入事件對象,當(dāng)寫方法的時候加了()就可以傳參区匣,這個時候如果需要事件對象,那就主動傳入$event
v-on綁定的事件可以是任意事件,v-on:可以縮寫為@
為什么在 HTML 中監(jiān)聽事件?
你可能注意到這種事件監(jiān)聽的方式違背了關(guān)注點分離 (separation of concern) 這個長期以來的優(yōu)良傳統(tǒng)。但不必?fù)?dān)心亏钩,因為所有的 Vue.js 事件處理方法和表達(dá)式都嚴(yán)格綁定在當(dāng)前視圖的 ViewModel 上莲绰,它不會導(dǎo)致任何維護(hù)上的困難。實際上姑丑,使用 v-on 有幾個好處:
掃一眼 HTML 模板便能輕松定位在 JavaScript 代碼里對應(yīng)的方法蛤签。
因為你無須在 JavaScript 里手動綁定事件,你的 ViewModel 代碼可以是非常純粹的邏輯栅哀,和 DOM 完全解耦震肮,更易于測試。
當(dāng)一個 ViewModel 被銷毀時留拾,所有的事件處理器都會自動被刪除戳晌。你無須擔(dān)心如何自己清理它們。