摘要 這兩年國內(nèi)最火的前端框架當(dāng)屬Vue.js了,很多使用過vue的程序員這樣評價它,,“vue.js兼具angular.js和react.js的優(yōu)點,,并剔除了它們的缺點”。授予了這么高的評價的vue.js,也是開源世界華人的驕傲,,因為它的作者是位中國人–尤雨溪(Evan You),。 Vue.js 是一個JavaScript MVVM庫,是一套構(gòu)建用戶界面的漸進(jìn)式框架,。它是以數(shù)據(jù)驅(qū)動和組件化的思想構(gòu)建的,,采用自底向上增量開發(fā)的設(shè)計。相比于Angular.js,,Vue.js提供了更加簡潔,、更易于理解的API,使得我們能夠快速地上手并使用Vue.js,。 調(diào)試插件在vue調(diào)試方面,,可以選擇安裝chrome插件vue Devtools。打開vue項目,,在console控制臺選擇vue面板,。在Devtools工具中,可以選擇組件,,查看對應(yīng)組件內(nèi)的數(shù)據(jù)信息,。也可以選擇Vuex選項,查看該項目內(nèi)Vuex的狀態(tài)變量信息,。 UI 組件庫在vue組件庫方面,,個人不推薦使用UI組件庫,畢竟自己造輪子的過程還是很有成就感的,。當(dāng)然,,如果更重視開發(fā)效率,并且選擇了vue2.0作為前端框架,,那么餓了么推出的Element組件就是一個很不錯的選擇,。其github項目(https://github.com/ElemeFE/element)更新比較頻繁,雖然項目會有些不穩(wěn)定,,但是目前為止element就是最好的支持vue2.0的UI組件,。就像它的口號一樣,“快速成型,,就為讓你少加班”,。 vue、React,、Angular1 對比性能對比在Angular1中,,在scope作用域中每一次數(shù)據(jù)變化,會觸發(fā)watcher的重新計算,,angular對常用的dom事件,,xhr事件等做了封裝, 在里面觸發(fā)進(jìn)入angular的digest流程。在digest流程里面,,會從rootscope開始遍歷, 檢查所有的watcher,。并且,,如果一些 watcher 觸發(fā)另一個更新,臟檢查循環(huán)(digest cycle)可能要運行多次,。Vue則沒有這個問題,,因為它使用基于依賴追蹤的觀察系統(tǒng)并且異步隊列更新,數(shù)據(jù)的變化都是獨立處罰的,,除非數(shù)據(jù)之間有明確的依賴關(guān)系,。
社區(qū)拓展對比Angular1的背后是Google,,所以社區(qū)基礎(chǔ)是不需要擔(dān)心的,,從Tutorial到StackOverflow的問題數(shù)量都可以反映出生態(tài)系統(tǒng)很完整。Angular1之后的2.0版本幾乎是一個推翻重做的框架,,對于使用了1.X版本的項目,,想要平滑的升級過渡到2.0版本應(yīng)該是非常困難的。 現(xiàn)在Angular2的線上應(yīng)用數(shù)量還不算太多,,主流編碼還是以1.X版本居多,。這個版本化巨大的差異也間接影響到了開發(fā)者對于angular的信心。
Vue 和 React 都提供了強(qiáng)大的路由庫來應(yīng)對大型應(yīng)用。然而Vue的路由庫和狀態(tài)管理庫都是由官方維護(hù)支持的,。 React 則是選擇把這些問題交給社區(qū)維護(hù),,因此創(chuàng)建了一個更分散的生態(tài)系統(tǒng)。但相對的,,React 的生態(tài)系統(tǒng)相比 Vue 更加繁榮,。 此外,Vue 提供了Vue-cli 腳手架,包括了Webpack,,Browserify,,甚至路由庫,能讓你非常容易地構(gòu)建項目,。 學(xué)習(xí)陡峭度對比在指令與組件方面,,Vue中將指令和組件分得更清晰。指令只封裝 DOM 操作,,而組件代表一個自給自足的獨立單元,,有自己的視圖和數(shù)據(jù)邏輯。在 Angular1 中兩者有不少相混的地方,。在API與框架設(shè)計方面,,angular1都比vue要復(fù)雜的多。就個人感覺而言,,angular1和React的學(xué)習(xí)曲線會相對陡峭一些,,而vue的編碼方式會更趨近于前端開發(fā)者的編程習(xí)慣。
這樣就生成了vue的hello world應(yīng)用。 渲染能力對比ReactNative能使你用相同的組件模型編寫有本地渲染能力的 APP(iOS 和 Android),。能同時跨多平臺開發(fā),,對開發(fā)者是非常棒的。為了彌補(bǔ)這方面的不足,,在2016年9月舉辦的JSConf2016期間,,vue.js的作者尤雨溪宣布加盟Weex團(tuán)隊擔(dān)任技術(shù)顧問,雙方將進(jìn)行更緊密的合作,,共建開發(fā)生態(tài)圈,。 Weex 是阿里的跨平臺用戶界面開發(fā)框架,Weex 的 JavaScript 框架運行時用的就是 Vue,。在此之后,,在 Weex 的幫助下,,使用 Vue 語法開發(fā)的組件不僅僅可以運行在瀏覽器端,還能被用于開發(fā) iOS 和 Android 上的原生應(yīng)用,。
vue的缺點 Vue就這么好,難道沒有缺點嗎,?當(dāng)然有,,vue雖然在16年非常火爆,,但是相比于angular和react,,不論是成熟度還是社區(qū)活躍度都還不是對手。此外,,Vue明確聲明了自己放棄了對IE8的支持,。再看看現(xiàn)在的招聘網(wǎng)站上,有多少寫了需要有angular經(jīng)驗,,而又有多少寫了需要vue經(jīng)驗,,就可見vue的影響力相比于angular和react還差的很遠(yuǎn)。 vue全家桶及項目架構(gòu)Vue有著名的全家桶系列,,包含了vue-router(http://router.),,vuex(http://vuex.), vue-resource(https://github.com/pagekit/vue-resource),。再加上構(gòu)建工具vue-cli,,就是一個完整的vue項目的核心構(gòu)成。 vue-router路由推薦使用npm工具來安裝vue-router
通過const router= new VueRouter()來定義一個路由,,并傳入對應(yīng)的配置,,包括路徑path和組件components,。 最后,在使用newVue來創(chuàng)建和掛載vue根實例的時候,,記得要通過 router配置參數(shù)注入路由,,即在router中export出來的路由對象,從而讓整個應(yīng)用都有路由功能,。 vuex狀態(tài)管理Vuex 是一個專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式,。它采用集中式存儲管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測的方式發(fā)生變化,。如前面所提到的,,Vuex 已經(jīng)集成到 Vue 的官方調(diào)試工具vue Devtools,可以輕松的查看項目中的Vuex狀態(tài)變化情況,。
安裝 Vuex 之后,,讓我們來創(chuàng)建一個 store。創(chuàng)建過程直截了當(dāng)——僅需要提供一個初始 state 對象和一些 mutations:
現(xiàn)在,,你可以通過 store.state 來獲取狀態(tài)對象,,以及通過 store.commit 方法觸發(fā)狀態(tài)變更: vue-resource介紹Vue-resource有體積小,支持IE9以上的瀏覽器,,支持promise特性的特點,。同樣推薦使用npm來安裝Vue-resource。
vue工程目錄結(jié)構(gòu)下圖是一個簡單的vue項目的大概結(jié)構(gòu),,下面簡要介紹一下每個文件夾中一般都會存放哪些內(nèi)容。
vue中l(wèi)ess的應(yīng)用
vue合實例講解Vue核心功能Vue的功能有很多,很難一一進(jìn)行詳細(xì)的解釋,。下面根據(jù)在工作中的項目實例,,結(jié)合代碼解釋一下vue的幾大核心功能。 計算屬性假設(shè)有如下的購物車結(jié)算場景,,用戶選中商品的總金額是根據(jù)商品數(shù)量,、選中商品種類數(shù) 和商品單價來變化的。然而,,數(shù)量,、選中種類數(shù)量和單價這幾個對象都是根據(jù)用戶選擇而動態(tài)變化的,如果在前端模版中為了計算最終商品總額,,放入這幾個動態(tài)變化的變量(商品數(shù)量,、商品單價、選中商品種類),,會讓這個邏輯變得復(fù)雜難以維護(hù),。在這種情況下,模版便不再簡潔清晰,。Vue給出了此種場景的解決方案,,在任何復(fù)雜的邏輯,vue都推薦使用計算屬性,。
模版語法Vue.js 使用了基于 HTML 的模版語法,允許開發(fā)者聲明式地將 DOM 綁定至底層 Vue 實例的數(shù)據(jù),。所有 Vue.js 的模板都是合法的 HTML ,,所以能被遵循規(guī)范的瀏覽器和 HTML 解析器解析,。Vue的模版語法包括了使用雙大括號插入文本、使用v-html插入純HTML內(nèi)容,、使用v-bind插入對象,、類似angular的v-if、v-show,、v-for指令,、以及過濾器等等。 組件化組件(Component)是 Vue.js 最強(qiáng)大的功能,。組件可以封裝可重用的代碼,,通過傳入對象的不同,實現(xiàn)組件的復(fù)用,。
過渡效果Vue 在插入、更新或者移除 DOM 時,,提供多種不同方式的應(yīng)用過渡效果,,可以用簡單的幾行代碼實現(xiàn)酷炫的過渡效果。Vue 提供了 transition 的封裝組件,,在使用v-if,、v-show等方法使得transition內(nèi)部dom元素發(fā)生變化時,,可以給任何元素和組件添加 entering/leaving 過渡。
總結(jié)根據(jù)不完全統(tǒng)計,包括餓了么,、稀土掘金,、蘇寧易購、美團(tuán),、天貓,、荔枝FM、房多多,、Laravel,、htmlBurger等國內(nèi)外知名大公司都在使用vue進(jìn)行新項目的開發(fā)和舊項目的前端重構(gòu)工作。
●本文編號562,以后想閱讀這篇文章直接輸入562即可 ●輸入m獲取文章目錄 |
|
來自: 快讀書館 > 《信息技術(shù)》