袁芳芳 寧君宇 田路強(qiáng) 陳森
摘 要:隨著互聯(lián)網(wǎng)的飛速發(fā)展,人們對PC端、移動(dòng)端應(yīng)用的要求也越來越高。除了要滿足用戶穩(wěn)定、快捷的使用功能體驗(yàn),令人愉悅的UI,流暢、炫酷、人性化的交互等也變得必不可少。這種需求催生出了一波又一波的前端框架,其中,Vue.js以簡潔、靈活、模塊友好等特點(diǎn)成為三大主流框架之一。本文先是對Vue.js的特點(diǎn)進(jìn)行概述,然后介紹了Vue.js的生態(tài)圈,以一個(gè)由內(nèi)而為的角度對Vue進(jìn)行了較全面的闡述。
關(guān)鍵詞:Vue;前端框架;生態(tài)圈
Vue.js(/vju/)是一套構(gòu)建用戶界面的漸進(jìn)式前端框架,其名字取自View的諧音,而且在法語里Vue也有View之意。Vue.js只關(guān)注視圖層,采用自底向上增量開發(fā)的設(shè)計(jì)。Vue的目標(biāo)是通過盡可能簡單的API實(shí)現(xiàn)響應(yīng)的數(shù)據(jù)綁定和靈活的組件系統(tǒng)。
1 Vue特點(diǎn)概述
簡潔:基于Vue框架開發(fā)應(yīng)用時(shí),代碼編寫風(fēng)格簡潔,并且通俗易懂;并且Vue相比Rect和Angular源碼更小巧。
靈活:由于Vue框架本身只關(guān)注UI的特點(diǎn),可以讓用戶更自由地選擇使用一個(gè)或一些庫。例如使用Vue框架時(shí),路由功能、Ajax技術(shù)并不屬于它的核心功能,但是如果用戶需要用到路由或Ajax,可以將相關(guān)的官方庫添加進(jìn)來;也可以使用其他的庫或插件,如jQuery的Ajax等。這種按需添加的方式可以使得應(yīng)用占用的資源更少,運(yùn)行效率更高。
模塊友好:基于Vue框架開發(fā)時(shí)可以利用CommonJS、RequireJS或者SeaJs等來自第三方的模塊構(gòu)建工具將代碼模塊化;也可以使用ES6的模塊化功能,再配合使用Webpack這種前端資源打包工具進(jìn)行相應(yīng)打包,輕松實(shí)現(xiàn)代碼的模塊化。
組件化:Vue框架支持組件化開發(fā),通過組件化開發(fā)大大提高了代碼可維護(hù)性。組件化的思路為將前端頁面上某個(gè)組件的html、css、js代碼集中放到一個(gè).vue的文件中進(jìn)行組件化的管理和使用。
2 Vue生態(tài)圈
隨著前端的盛行,Vue框架的用戶群越來越大,Vue官方開啟了全職運(yùn)營、維護(hù)、以及迭代開發(fā)模式,從而構(gòu)建了越來越豐富的生態(tài)圈,如Vue Router-路由管理器、Vuex-狀態(tài)管理工具、Vue Cli-腳手架、Vue Loader-文件加載器、 Vue Server Render-服務(wù)端渲染、Vue devtools-調(diào)試工具等。
Vue Router,是Vue官方的路由管理器。它為Vue框架增加了路由功能。通過路由功能,用戶可以根據(jù)開發(fā)的需求自行加載相關(guān)組件,簡化構(gòu)建單個(gè)頁面應(yīng)用的過程。Vue框架對組件化開發(fā)的支持也使得路由實(shí)現(xiàn)起來相對簡單。由于頁面的所有內(nèi)容都可以組件化開發(fā),所以在基于Vue框架開發(fā)時(shí),路由實(shí)現(xiàn)相對簡單。使用思路為將路徑和組件一一對應(yīng),然后在頁面中把組件渲染出來。
VueX,是Vue官方的狀態(tài)管理工具,采用全局單例模式,將組件的共享狀態(tài)抽離出來管理,使組件樹中的每一個(gè)位置都可以獲取共享的狀態(tài)變量或者觸發(fā)行為。它的核心概念包括共享狀態(tài)State,組件的計(jì)算屬性Getter,僅支持同步修改狀態(tài)的方法Mutation,支持異步修改狀態(tài)變量的方法Action。使用思路為:(1)在State中建立屬性變量;(2)通過提交Mutation方式同步或異步更改State中的變量。
Vue Cli,腳手架工具,是一個(gè)基于Vue框架進(jìn)行快速開發(fā)的完整系統(tǒng),依賴該工具可以快速創(chuàng)建一個(gè)項(xiàng)目。Vue Cli的目標(biāo)是將Vue生態(tài)中的工具基礎(chǔ)標(biāo)準(zhǔn)化。
Vue Cli 還包含Cli,Cli Service,Cli插件三個(gè)獨(dú)立部分。Cli是一個(gè)全局安裝的npm包,提供了終端里的Vue命令。Cli Service是一個(gè)局部安裝的npm包,是一個(gè)開發(fā)環(huán)境依賴。Cli 插件是向用戶的Vue項(xiàng)目提供可選功能的npm包,
使用Vue Cli的思路為:(1)進(jìn)入放置項(xiàng)目目錄,創(chuàng)建項(xiàng)目;(2)根據(jù)提示輸入項(xiàng)目名稱、描述、作者、打包方式等;(3)利用cnpm install命令安裝依賴。
webpack處理各種資源的時(shí)候,需要加載各種loader,Vue Loader就屬于webpack的一個(gè)文件加載器,用來將.vue后綴的單文件組件轉(zhuǎn)換為JavaScript模塊,從而能夠提供用戶以一種名為單文件組件 (SFCs)的格式撰寫 Vue 組件。
Webpack和Vue Loader的配合使用,為用戶撰寫基于Vue框架的應(yīng)用提供了一個(gè)現(xiàn)代、靈活且極其強(qiáng)大的前端工作流。
Vue Server Render為服務(wù)端渲染,即客戶端向服務(wù)端請求某頁面時(shí),只需要發(fā)送一次請求,服務(wù)端就將一個(gè)渲染好的頁面直接返回給客戶端。Vue的服務(wù)端渲染原理是:服務(wù)器利用Vue渲染庫的核心函數(shù)將組件或頁面生成html字符串,然后發(fā)送到客戶端瀏覽器,最后將靜態(tài)標(biāo)記"混合"為客戶端上完全交互的應(yīng)用程序。服務(wù)端渲染的特點(diǎn)有:(1)相比傳統(tǒng)單頁應(yīng)用,服務(wù)端渲染更有利于搜索引擎優(yōu)化,減少頁面首屏的加載時(shí)間。(2)服務(wù)端渲染對服務(wù)器的壓力相對較大。
Vue Class Component是Vue官方推出的對typescript支持的基于類的注解裝飾器(庫)。使用時(shí)需要注意:(1)methods可以直接聲明為類的成員方法;(2)計(jì)算屬性可以被聲明為類的屬性訪問器;(3)初始化的data可以被聲明為類屬性;(4)data、render以及所有的Vue 生命周期鉤子可以直接作為類的成員方法;(5)所有其他屬性,需要放在裝飾器中。
Vue Devtools是一款基于chrome瀏覽器的插件,用于調(diào)試基于Vue框架的應(yīng)用。使用該插件可以使用戶開發(fā)起應(yīng)用來更加高效率。
3 結(jié)語
Vue簡潔、靈活、模塊化友好等特點(diǎn)吸引了越來越多的開發(fā)者,反過來,越來越多的開發(fā)者也在不斷繁榮Vue的生態(tài)系統(tǒng)。本文從Vue各個(gè)特點(diǎn)出發(fā)再到生態(tài)圈的各個(gè)組成,較全面的為讀者闡述了當(dāng)下流行的前端框架Vue。
參考文獻(xiàn):
[1]劉博文.深入淺出Vue.js.人民郵電出版社,2019-03-01.
[2]陳陸揚(yáng).Vue.js前端開發(fā)快速入門與專業(yè)應(yīng)用.人民郵電出版社,2017-01-01.
[3]朱二華.基于Vue.js的Web前端應(yīng)用研究[J].科技與創(chuàng)新,2017(20):119-121.