初識(shí)Vue.js
Vue 是一套用于構(gòu)建用戶界面的漸進(jìn)式框架,,也是一款 Web 應(yīng)用框架,,可創(chuàng)建復(fù)雜的單頁應(yīng)用,。Vue 關(guān)注的核心是 MVC 模式中的視圖層,,同時(shí),,它也能方便地獲取數(shù)據(jù)更新,,并通過組件內(nèi)部特定的方法實(shí)現(xiàn)視圖與模型的交互。Vue 不僅易于上手,,還便于與第三方庫或既有項(xiàng)目整合,,是當(dāng)前最受歡迎的開源 Javascript 項(xiàng)目之一。2016 年的一項(xiàng)針對(duì) Javascript 框架的調(diào)查表明,,Vue 有著 89%的開發(fā)者滿意度,。在 GitHub 上,該項(xiàng)目平均每天能收獲 95 顆星,,為 GitHub 有史以來星標(biāo)數(shù)第三多的項(xiàng)目,。
Vue的首個(gè)公開版發(fā)布于2014 年 2 月 25 日,它的作者是一個(gè)名叫尤雨溪的美國華人,。
尤雨溪出生于 1987 年 10 月 31 日,英文名 Evan You,,網(wǎng)名尤小右,,是一位優(yōu)秀的前端工程師。尤雨溪作為 Vue Technology LLC 的創(chuàng)始人,,一直致力于 Vue 的研究與開發(fā),。尤雨溪曾服務(wù)于 Meteor、谷歌,,在為 AngularJS 工作之后,,Vue 的作者尤雨溪開發(fā)出了 Vue 框架,并于 2013 年 12 月 8 日在 Hacker News,、Echo JS 與 Reddit 的/r/javascript 版塊發(fā)布了最早的版本,。一天之內(nèi),Vue 就登上這三個(gè)網(wǎng)站的首頁,。他聲稱自己的思路是提取 Angular 中為自己所喜歡的部分,,構(gòu)建出一款相當(dāng)輕量的框架。
簡單介紹下Vue的重要發(fā)展節(jié)點(diǎn):
2013年,,在 Google 工作的尤雨溪,,受到 Angular 的啟發(fā),,開發(fā)出了一款輕量級(jí)框架,最初命名為 Seed ,。
2013.12,,更名為Vue(View的法語),圖標(biāo)顏色是代表勃勃生機(jī)的綠色,,版本號(hào)是 0.6.0,。
2014.01.24,Vue 正式對(duì)外發(fā)布,,版本號(hào)是 0.8.0,。
2014.02.25,0.9.0 發(fā)布,,有了自己的代號(hào):Animatrix,,此后,重要的版本都會(huì)有自己的代號(hào),。
2015.06.13,,0.12.0,代號(hào)Dragon Ball,,Laravel 社區(qū)(一款流行的 PHP 框架的社區(qū))首次使用 Vue,,Vue 在 JS 社區(qū)也打響了知名度。
2015.10.26,,1.0.0 Evangelion 是 Vue 歷史上的第一個(gè)里程碑,。同年,vue-router,、vuex,、vue-cli 相繼發(fā)布,標(biāo)志著 Vue從一個(gè)視圖層庫發(fā)展為一個(gè)漸進(jìn)式框架,。
2016.10.01,,2.0.0 是第二個(gè)重要的里程碑,它吸收了 React 的虛擬 Dom 方案,,還支持服務(wù)端渲染,。自從Vue 2.0 發(fā)布之后,Vue 就成了前端領(lǐng)域的熱門話題,。
2019.02.05,,Vue 發(fā)布了 2.6.0 ,這是一個(gè)承前啟后的版本,,在它之后,,推出了 3.0.0。
2019.12.05,在萬眾期待中,,尤雨溪公布了 Vue 3 源代碼,,此時(shí)的 Vue 3仍 處于 Alpha 版本。
2020.09.18,,Vue.js 3.0 正式發(fā)布,。
Vue的重要發(fā)展節(jié)點(diǎn):
2013年,在 Google 工作的尤雨溪,,受到 Angular 的啟發(fā),,開發(fā)出了一款輕量級(jí)框架,最初命名為 Seed ,。
2013.12,,更名為Vue(View的法語),圖標(biāo)顏色是代表勃勃生機(jī)的綠色,,版本號(hào)是 0.6.0,。
2014.01.24,Vue 正式對(duì)外發(fā)布,,版本號(hào)是 0.8.0,。
2014.02.25,0.9.0 發(fā)布,,有了自己的代號(hào):Animatrix,,此后,重要的版本都會(huì)有自己的代號(hào),。
2015.06.13,,0.12.0,代號(hào)Dragon Ball,,Laravel 社區(qū)(一款流行的 PHP 框架的社區(qū))首次使用 Vue,,Vue 在 JS 社區(qū)也打響了知名度。
2015.10.26,,1.0.0 Evangelion 是 Vue 歷史上的第一個(gè)里程碑。同年,,vue-router,、vuex、vue-cli 相繼發(fā)布,,標(biāo)志著 Vue從一個(gè)視圖層庫發(fā)展為一個(gè)漸進(jìn)式框架,。
2016.10.01,2.0.0 是第二個(gè)重要的里程碑,,它吸收了 React 的虛擬 Dom 方案,,還支持服務(wù)端渲染。自從Vue 2.0 發(fā)布之后,Vue 就成了前端領(lǐng)域的熱門話題,。
2019.02.05,,Vue 發(fā)布了 2.6.0 ,這是一個(gè)承前啟后的版本,,在它之后,,推出了 3.0.0。
2019.12.05,,在萬眾期待中,,尤雨溪公布了 Vue 3 源代碼,此時(shí)的 Vue 3仍 處于 Alpha 版本,。
2020.09.18,,Vue.js 3.0 正式發(fā)布。
Vue.js 核心理念
Vue.js(讀音/vju:/,,發(fā)音類似于view)是一套構(gòu)建用戶界面的漸進(jìn)式框架,。與其他重量級(jí)框架不同的是,Vue 采用自底向上增量開發(fā)的設(shè)計(jì),。
Vue 的核心庫只關(guān)注視圖層,,并且非常容易學(xué)習(xí),也非常容易與其他庫或已有項(xiàng)目整合,。Vue 完全有能力驅(qū)動(dòng)采用單文件組件和 Vue 生態(tài)系統(tǒng)支持的庫開發(fā)的復(fù)雜單頁應(yīng)用,。
Vue.js 還提供了 MVVM 數(shù)據(jù)綁定和一個(gè)可組合的組件系統(tǒng),具有簡單,、靈活的 API,,其目標(biāo)是通過盡可能簡單的 API 實(shí)現(xiàn)響應(yīng)式的數(shù)據(jù)綁定和可組合的視圖組件。
我們也可以說 Vue.js 是一套響應(yīng)式系統(tǒng)(Reactivity System),。數(shù)據(jù)模型層(Model)只是普通 Javascript 對(duì)象,,如下圖所示,{ }代表一個(gè) Javascript 對(duì)象,,修改它則更新相應(yīng)的 HTML 片段(DOM),,這些 HTML 片段也稱為“視圖(view)”。這會(huì)讓狀態(tài)管理變得非常簡單且直觀,,可實(shí)現(xiàn)數(shù)據(jù)的雙向綁定,,所以我們也稱之為響應(yīng)式系統(tǒng)。
為什么使用 Vue.js
我們都知道完整的網(wǎng)頁是由 DOM 組合與嵌套形成最基本的視圖結(jié)構(gòu),,再加上 CSS 樣式的修飾,,使用 Javascript 接受用戶的交互請(qǐng)求,并通過事件機(jī)制來響應(yīng)用戶交互操作而形成的,。
我們把最基本的視圖結(jié)構(gòu)(也就是 HTML DOM)拿出來,,稱為視圖層。這個(gè)被稱為視圖層的部分就是 Vue 核心庫關(guān)注的部分。
Vue.js 為什么關(guān)注視圖層呢,?因?yàn)橐恍╉撁嬖胤浅6?。結(jié)構(gòu)龐大的網(wǎng)頁如果使用傳統(tǒng)開發(fā)方式,數(shù)據(jù)和視圖會(huì)全部混合在 HTML 中,,處理起來十分不易,,并且結(jié)構(gòu)之間還存在依賴或依存關(guān)系,代碼上就會(huì)出現(xiàn)更多問題,。
有過前端開發(fā)基礎(chǔ)的讀者都應(yīng)當(dāng)了解過 jQuery,,jQuery 給予我們簡潔的語法和跨平臺(tái)的兼容性,極大地簡化了 Javascript 開發(fā)人員遍歷 HTML 文檔,、操作 DOM,、事件處理等操作。
用過 jQuery 的讀者都有體會(huì),,開始頁面元素不多,,有時(shí)會(huì)需要一層層地不斷向上尋找父輩元素,如$('#xxx').parent().parent(),,但后期修改頁面結(jié)構(gòu),,代碼可能就會(huì)變得臃腫,如$('#xxx').parent().parent().parent(),,隨著產(chǎn)品升級(jí)的速度越來越快,,修改變得越來越多,頁面中相似的關(guān)聯(lián)和嵌套 DOM 元素多得數(shù)不清,,而 jQuery 選擇器及 DOM 操作本身也存在性能缺失問題,,想要修改無從下手。
總之,,原本輕巧簡潔的 jQuery 代碼,,在產(chǎn)品需求面前變得啰嗦冗長。
但是 Vue.js 解決了這些問題,,這些問題將在 Vue 中消失,。
Vue.js 的主要特點(diǎn)
Vue.js 是一個(gè)優(yōu)秀的前端界面開發(fā) Javascript 庫,它之所以非?;?,是因?yàn)橛斜姸嗤怀龅奶攸c(diǎn),其中主要的特點(diǎn)有以下幾個(gè),。
1) 輕量級(jí)的框架
Vue.js 能夠自動(dòng)追蹤依賴的模板表達(dá)式和計(jì)算屬性,提供 MVVM 數(shù)據(jù)綁定和一個(gè)可組合的組件系統(tǒng),,具有簡單,、靈活的 API,使讀者更加容易理解,能夠更快上手,。
2) 雙向數(shù)據(jù)綁定
聲明式渲染是數(shù)據(jù)雙向綁定的主要體現(xiàn),,同樣也是 Vue.js 的核心,它允許采用簡潔的模板語法將數(shù)據(jù)聲明式渲染整合進(jìn) DOM,。
3) 指令
Vue.js 與頁面進(jìn)行交互,,主要就是通過內(nèi)置指令來完成的,指令的作用是當(dāng)其表達(dá)式的值改變時(shí)相應(yīng)地將某些行為應(yīng)用到 DOM 上,。
4) 組件化
組件(Component)是 Vue.js 最強(qiáng)大的功能之一,。組件可以擴(kuò)展 HTML 元素,封裝可重用的代碼,。
在 Vue 中,,父子組件通過 props 傳遞通信,從父向子單向傳遞,。子組件與父組件通信,,通過觸發(fā)事件通知父組件改變數(shù)據(jù)。這樣就形成了一個(gè)基本的父子通信模式,。
在開發(fā)中組件和 HTML,、Javascript 等有非常緊密的關(guān)系時(shí),可以根據(jù)實(shí)際的需要自定義組件,,使開發(fā)變得更加便利,,可大量減少代碼編寫量。
組件還支持熱重載(hotreload),。當(dāng)我們做了修改時(shí),,不會(huì)刷新頁面,只是對(duì)組件本身進(jìn)行立刻重載,,不會(huì)影響整個(gè)應(yīng)用當(dāng)前的狀態(tài),。CSS 也支持熱重載。
5) 客戶端路由
Vue-router 是 Vue.js 官方的路由插件,,與 Vue.js 深度集成,,用于構(gòu)建單頁面應(yīng)用。Vue 單頁面應(yīng)用是基于路由和組件的,,路由用于設(shè)定訪問路徑,,并將路徑和組件映射起來,傳統(tǒng)的頁面是通過超鏈接實(shí)現(xiàn)頁面的切換和跳轉(zhuǎn)的,。
6) 狀態(tài)管理
狀態(tài)管理實(shí)際就是一個(gè)單向的數(shù)據(jù)流,,State 驅(qū)動(dòng) View 的渲染,而用戶對(duì) View 進(jìn)行操作產(chǎn)生 Action,,使 State 產(chǎn)生變化,,從而使 View 重新渲染,,形成一個(gè)單獨(dú)的組件。
Vue.js 有什么優(yōu)勢
Vue 與其他框架相比有什么優(yōu)勢呢,?上面我們已經(jīng)提到了 jQuery,,還有其他的前端框架,如 React,、Angular 等,。相比較而言,Vue 最為輕量化,,而且已經(jīng)形成了完整的一套生態(tài)系統(tǒng),,可以快速迭代更新。
作為前端開發(fā)人員的首選入門框架,,Vue 有很多優(yōu)勢:
Vue.js 可以進(jìn)行組件化開發(fā),,使代碼編寫量大大減少,讀者更加易于理解,。
Vue.js 最突出的優(yōu)勢在于可以對(duì)數(shù)據(jù)進(jìn)行雙向綁定(在之后的編寫中我們會(huì)明顯地感覺到這個(gè)特點(diǎn)的便捷),。
使用 Vue.js 編寫出來的界面效果本身就是響應(yīng)式的,這使網(wǎng)頁在各種設(shè)備上都能顯示出非常好看的效果,。
相比傳統(tǒng)的頁面通過超鏈接實(shí)現(xiàn)頁面的切換和跳轉(zhuǎn),,Vue 使用路由不會(huì)刷新頁面。
說明:Vue必須在ES5版本以上的環(huán)境下使用,,一些不支持ES5的舊瀏覽器中無法運(yùn)行Vue,。
Vue的應(yīng)用
Vue的定位就是以低門檻起家,市場定位的主要用戶自然是中小型企業(yè),,當(dāng)然這不能代表Vue不適合于大型項(xiàng)目,!雖然行業(yè)內(nèi)很多人認(rèn)為Vue不適合于大型項(xiàng)目,但是我認(rèn)為就算Vue真的不適合大型項(xiàng)目,,互聯(lián)網(wǎng)之廣闊,,有著足夠的空間給Vue的開發(fā)者去生存了。
尤雨溪在知乎上對(duì)Vue在國際上沒影響力的部分回復(fù)如下:真要說大機(jī)構(gòu),,GitLab 是 Vue 寫的,,最近上市了,160 億美元市值,,可還行,?Wikimedia(Wikipedia 背后的基金會(huì))全線轉(zhuǎn)向 Vue,算大機(jī)構(gòu)不,?NASA 的火箭發(fā)射控制系統(tǒng)有部分界面用 Vue 寫的,,夠高大上了么(Vue 的貢獻(xiàn)者因此都拿到了 NASA 2020 火星任務(wù)的 GitHub 徽章)?Google 的求職系統(tǒng) careers.google.com 是 Vue 寫的,,用它投過簡歷不,?蘋果 SwiftUI 的教程 Vue 寫的,,學(xué)原生開發(fā)的時(shí)候看過沒?LV 美國官網(wǎng) Nuxt/Vue 寫的,,買過幾個(gè)沒?你翻墻上 P 站解決生理需求的時(shí)候,,Vue 的 logo 也會(huì)亮起來,,這個(gè)流量又如何?
尤雨溪設(shè)計(jì)Vue的初衷是可以讓那些像他一樣非科班出身的人也可以簡單的編寫網(wǎng)頁,,不懂js的其他設(shè)計(jì)職業(yè)也可以參與其中,。只是可能情況有點(diǎn)出乎意料,這玩意火了,,而且現(xiàn)在還TND造成了"360行,,行行轉(zhuǎn)前端"的奇葩盛況。大量或少或無經(jīng)驗(yàn)的從業(yè)者通過Vue找到了工作,。個(gè)人認(rèn)為這是符合尤雨溪的初衷的,,因?yàn)楹芏鄾]有任何前端知識(shí)的人只需要通過極短的時(shí)間(相對(duì)其他語言和框架的學(xué)習(xí)成本)就可以達(dá)到找個(gè)小公司上班的水平。對(duì)此我只能說呵呵了,,哈哈哈,。
總結(jié):Vue是尤雨溪推出的前端開源框架,簡單講就是用于開發(fā)網(wǎng)站,,特點(diǎn)是簡單易學(xué),,能快速上手,目前廣泛應(yīng)用于中小企業(yè),,很多非計(jì)算機(jī)科班出身的同學(xué)通過Vue進(jìn)入了計(jì)算機(jī)行業(yè)工作,。
官網(wǎng)資料:https://cn.vuejs.org/v2/guide/index.html
Vue 是一套用于構(gòu)建用戶界面的漸進(jìn)式框架,,也是一款 Web 應(yīng)用框架,,可創(chuàng)建復(fù)雜的單頁應(yīng)用,。Vue 關(guān)注的核心是 MVC 模式中的視圖層,,同時(shí),,它也能方便地獲取數(shù)據(jù)更新,,并通過組件內(nèi)部特定的方法實(shí)現(xiàn)視圖與模型的交互。Vue 不僅易于上手,,還便于與第三方庫或既有項(xiàng)目整合,,是當(dāng)前最受歡迎的開源 Javascript 項(xiàng)目之一。2016 年的一項(xiàng)針對(duì) Javascript 框架的調(diào)查表明,,Vue 有著 89%的開發(fā)者滿意度,。在 GitHub 上,該項(xiàng)目平均每天能收獲 95 顆星,,為 GitHub 有史以來星標(biāo)數(shù)第三多的項(xiàng)目,。
Vue的首個(gè)公開版發(fā)布于2014 年 2 月 25 日,它的作者是一個(gè)名叫尤雨溪的美國華人,。
尤雨溪出生于 1987 年 10 月 31 日,英文名 Evan You,,網(wǎng)名尤小右,,是一位優(yōu)秀的前端工程師。尤雨溪作為 Vue Technology LLC 的創(chuàng)始人,,一直致力于 Vue 的研究與開發(fā),。尤雨溪曾服務(wù)于 Meteor、谷歌,,在為 AngularJS 工作之后,,Vue 的作者尤雨溪開發(fā)出了 Vue 框架,并于 2013 年 12 月 8 日在 Hacker News,、Echo JS 與 Reddit 的/r/javascript 版塊發(fā)布了最早的版本,。一天之內(nèi),Vue 就登上這三個(gè)網(wǎng)站的首頁,。他聲稱自己的思路是提取 Angular 中為自己所喜歡的部分,,構(gòu)建出一款相當(dāng)輕量的框架。
簡單介紹下Vue的重要發(fā)展節(jié)點(diǎn):
2013年,,在 Google 工作的尤雨溪,,受到 Angular 的啟發(fā),,開發(fā)出了一款輕量級(jí)框架,最初命名為 Seed ,。
2013.12,,更名為Vue(View的法語),圖標(biāo)顏色是代表勃勃生機(jī)的綠色,,版本號(hào)是 0.6.0,。
2014.01.24,Vue 正式對(duì)外發(fā)布,,版本號(hào)是 0.8.0,。
2014.02.25,0.9.0 發(fā)布,,有了自己的代號(hào):Animatrix,,此后,重要的版本都會(huì)有自己的代號(hào),。
2015.06.13,,0.12.0,代號(hào)Dragon Ball,,Laravel 社區(qū)(一款流行的 PHP 框架的社區(qū))首次使用 Vue,,Vue 在 JS 社區(qū)也打響了知名度。
2015.10.26,,1.0.0 Evangelion 是 Vue 歷史上的第一個(gè)里程碑,。同年,vue-router,、vuex,、vue-cli 相繼發(fā)布,標(biāo)志著 Vue從一個(gè)視圖層庫發(fā)展為一個(gè)漸進(jìn)式框架,。
2016.10.01,,2.0.0 是第二個(gè)重要的里程碑,它吸收了 React 的虛擬 Dom 方案,,還支持服務(wù)端渲染,。自從Vue 2.0 發(fā)布之后,Vue 就成了前端領(lǐng)域的熱門話題,。
2019.02.05,,Vue 發(fā)布了 2.6.0 ,這是一個(gè)承前啟后的版本,,在它之后,,推出了 3.0.0。
2019.12.05,在萬眾期待中,,尤雨溪公布了 Vue 3 源代碼,,此時(shí)的 Vue 3仍 處于 Alpha 版本。
2020.09.18,,Vue.js 3.0 正式發(fā)布,。
Vue的重要發(fā)展節(jié)點(diǎn):
2013年,在 Google 工作的尤雨溪,,受到 Angular 的啟發(fā),,開發(fā)出了一款輕量級(jí)框架,最初命名為 Seed ,。
2013.12,,更名為Vue(View的法語),圖標(biāo)顏色是代表勃勃生機(jī)的綠色,,版本號(hào)是 0.6.0,。
2014.01.24,Vue 正式對(duì)外發(fā)布,,版本號(hào)是 0.8.0,。
2014.02.25,0.9.0 發(fā)布,,有了自己的代號(hào):Animatrix,,此后,重要的版本都會(huì)有自己的代號(hào),。
2015.06.13,,0.12.0,代號(hào)Dragon Ball,,Laravel 社區(qū)(一款流行的 PHP 框架的社區(qū))首次使用 Vue,,Vue 在 JS 社區(qū)也打響了知名度。
2015.10.26,,1.0.0 Evangelion 是 Vue 歷史上的第一個(gè)里程碑。同年,,vue-router,、vuex、vue-cli 相繼發(fā)布,,標(biāo)志著 Vue從一個(gè)視圖層庫發(fā)展為一個(gè)漸進(jìn)式框架,。
2016.10.01,2.0.0 是第二個(gè)重要的里程碑,,它吸收了 React 的虛擬 Dom 方案,,還支持服務(wù)端渲染。自從Vue 2.0 發(fā)布之后,Vue 就成了前端領(lǐng)域的熱門話題,。
2019.02.05,,Vue 發(fā)布了 2.6.0 ,這是一個(gè)承前啟后的版本,,在它之后,,推出了 3.0.0。
2019.12.05,,在萬眾期待中,,尤雨溪公布了 Vue 3 源代碼,此時(shí)的 Vue 3仍 處于 Alpha 版本,。
2020.09.18,,Vue.js 3.0 正式發(fā)布。
Vue.js 核心理念
Vue.js(讀音/vju:/,,發(fā)音類似于view)是一套構(gòu)建用戶界面的漸進(jìn)式框架,。與其他重量級(jí)框架不同的是,Vue 采用自底向上增量開發(fā)的設(shè)計(jì),。
Vue 的核心庫只關(guān)注視圖層,,并且非常容易學(xué)習(xí),也非常容易與其他庫或已有項(xiàng)目整合,。Vue 完全有能力驅(qū)動(dòng)采用單文件組件和 Vue 生態(tài)系統(tǒng)支持的庫開發(fā)的復(fù)雜單頁應(yīng)用,。
Vue.js 還提供了 MVVM 數(shù)據(jù)綁定和一個(gè)可組合的組件系統(tǒng),具有簡單,、靈活的 API,,其目標(biāo)是通過盡可能簡單的 API 實(shí)現(xiàn)響應(yīng)式的數(shù)據(jù)綁定和可組合的視圖組件。
我們也可以說 Vue.js 是一套響應(yīng)式系統(tǒng)(Reactivity System),。數(shù)據(jù)模型層(Model)只是普通 Javascript 對(duì)象,,如下圖所示,{ }代表一個(gè) Javascript 對(duì)象,,修改它則更新相應(yīng)的 HTML 片段(DOM),,這些 HTML 片段也稱為“視圖(view)”。這會(huì)讓狀態(tài)管理變得非常簡單且直觀,,可實(shí)現(xiàn)數(shù)據(jù)的雙向綁定,,所以我們也稱之為響應(yīng)式系統(tǒng)。
為什么使用 Vue.js
我們都知道完整的網(wǎng)頁是由 DOM 組合與嵌套形成最基本的視圖結(jié)構(gòu),,再加上 CSS 樣式的修飾,,使用 Javascript 接受用戶的交互請(qǐng)求,并通過事件機(jī)制來響應(yīng)用戶交互操作而形成的,。
我們把最基本的視圖結(jié)構(gòu)(也就是 HTML DOM)拿出來,,稱為視圖層。這個(gè)被稱為視圖層的部分就是 Vue 核心庫關(guān)注的部分。
Vue.js 為什么關(guān)注視圖層呢,?因?yàn)橐恍╉撁嬖胤浅6?。結(jié)構(gòu)龐大的網(wǎng)頁如果使用傳統(tǒng)開發(fā)方式,數(shù)據(jù)和視圖會(huì)全部混合在 HTML 中,,處理起來十分不易,,并且結(jié)構(gòu)之間還存在依賴或依存關(guān)系,代碼上就會(huì)出現(xiàn)更多問題,。
有過前端開發(fā)基礎(chǔ)的讀者都應(yīng)當(dāng)了解過 jQuery,,jQuery 給予我們簡潔的語法和跨平臺(tái)的兼容性,極大地簡化了 Javascript 開發(fā)人員遍歷 HTML 文檔,、操作 DOM,、事件處理等操作。
用過 jQuery 的讀者都有體會(huì),,開始頁面元素不多,,有時(shí)會(huì)需要一層層地不斷向上尋找父輩元素,如$('#xxx').parent().parent(),,但后期修改頁面結(jié)構(gòu),,代碼可能就會(huì)變得臃腫,如$('#xxx').parent().parent().parent(),,隨著產(chǎn)品升級(jí)的速度越來越快,,修改變得越來越多,頁面中相似的關(guān)聯(lián)和嵌套 DOM 元素多得數(shù)不清,,而 jQuery 選擇器及 DOM 操作本身也存在性能缺失問題,,想要修改無從下手。
總之,,原本輕巧簡潔的 jQuery 代碼,,在產(chǎn)品需求面前變得啰嗦冗長。
但是 Vue.js 解決了這些問題,,這些問題將在 Vue 中消失,。
Vue.js 的主要特點(diǎn)
Vue.js 是一個(gè)優(yōu)秀的前端界面開發(fā) Javascript 庫,它之所以非?;?,是因?yàn)橛斜姸嗤怀龅奶攸c(diǎn),其中主要的特點(diǎn)有以下幾個(gè),。
1) 輕量級(jí)的框架
Vue.js 能夠自動(dòng)追蹤依賴的模板表達(dá)式和計(jì)算屬性,提供 MVVM 數(shù)據(jù)綁定和一個(gè)可組合的組件系統(tǒng),,具有簡單,、靈活的 API,使讀者更加容易理解,能夠更快上手,。
2) 雙向數(shù)據(jù)綁定
聲明式渲染是數(shù)據(jù)雙向綁定的主要體現(xiàn),,同樣也是 Vue.js 的核心,它允許采用簡潔的模板語法將數(shù)據(jù)聲明式渲染整合進(jìn) DOM,。
3) 指令
Vue.js 與頁面進(jìn)行交互,,主要就是通過內(nèi)置指令來完成的,指令的作用是當(dāng)其表達(dá)式的值改變時(shí)相應(yīng)地將某些行為應(yīng)用到 DOM 上,。
4) 組件化
組件(Component)是 Vue.js 最強(qiáng)大的功能之一,。組件可以擴(kuò)展 HTML 元素,封裝可重用的代碼,。
在 Vue 中,,父子組件通過 props 傳遞通信,從父向子單向傳遞,。子組件與父組件通信,,通過觸發(fā)事件通知父組件改變數(shù)據(jù)。這樣就形成了一個(gè)基本的父子通信模式,。
在開發(fā)中組件和 HTML,、Javascript 等有非常緊密的關(guān)系時(shí),可以根據(jù)實(shí)際的需要自定義組件,,使開發(fā)變得更加便利,,可大量減少代碼編寫量。
組件還支持熱重載(hotreload),。當(dāng)我們做了修改時(shí),,不會(huì)刷新頁面,只是對(duì)組件本身進(jìn)行立刻重載,,不會(huì)影響整個(gè)應(yīng)用當(dāng)前的狀態(tài),。CSS 也支持熱重載。
5) 客戶端路由
Vue-router 是 Vue.js 官方的路由插件,,與 Vue.js 深度集成,,用于構(gòu)建單頁面應(yīng)用。Vue 單頁面應(yīng)用是基于路由和組件的,,路由用于設(shè)定訪問路徑,,并將路徑和組件映射起來,傳統(tǒng)的頁面是通過超鏈接實(shí)現(xiàn)頁面的切換和跳轉(zhuǎn)的,。
6) 狀態(tài)管理
狀態(tài)管理實(shí)際就是一個(gè)單向的數(shù)據(jù)流,,State 驅(qū)動(dòng) View 的渲染,而用戶對(duì) View 進(jìn)行操作產(chǎn)生 Action,,使 State 產(chǎn)生變化,,從而使 View 重新渲染,,形成一個(gè)單獨(dú)的組件。
Vue.js 有什么優(yōu)勢
Vue 與其他框架相比有什么優(yōu)勢呢,?上面我們已經(jīng)提到了 jQuery,,還有其他的前端框架,如 React,、Angular 等,。相比較而言,Vue 最為輕量化,,而且已經(jīng)形成了完整的一套生態(tài)系統(tǒng),,可以快速迭代更新。
作為前端開發(fā)人員的首選入門框架,,Vue 有很多優(yōu)勢:
Vue.js 可以進(jìn)行組件化開發(fā),,使代碼編寫量大大減少,讀者更加易于理解,。
Vue.js 最突出的優(yōu)勢在于可以對(duì)數(shù)據(jù)進(jìn)行雙向綁定(在之后的編寫中我們會(huì)明顯地感覺到這個(gè)特點(diǎn)的便捷),。
使用 Vue.js 編寫出來的界面效果本身就是響應(yīng)式的,這使網(wǎng)頁在各種設(shè)備上都能顯示出非常好看的效果,。
相比傳統(tǒng)的頁面通過超鏈接實(shí)現(xiàn)頁面的切換和跳轉(zhuǎn),,Vue 使用路由不會(huì)刷新頁面。
說明:Vue必須在ES5版本以上的環(huán)境下使用,,一些不支持ES5的舊瀏覽器中無法運(yùn)行Vue,。
Vue的應(yīng)用
Vue的定位就是以低門檻起家,市場定位的主要用戶自然是中小型企業(yè),,當(dāng)然這不能代表Vue不適合于大型項(xiàng)目,!雖然行業(yè)內(nèi)很多人認(rèn)為Vue不適合于大型項(xiàng)目,但是我認(rèn)為就算Vue真的不適合大型項(xiàng)目,,互聯(lián)網(wǎng)之廣闊,,有著足夠的空間給Vue的開發(fā)者去生存了。
尤雨溪在知乎上對(duì)Vue在國際上沒影響力的部分回復(fù)如下:真要說大機(jī)構(gòu),,GitLab 是 Vue 寫的,,最近上市了,160 億美元市值,,可還行,?Wikimedia(Wikipedia 背后的基金會(huì))全線轉(zhuǎn)向 Vue,算大機(jī)構(gòu)不,?NASA 的火箭發(fā)射控制系統(tǒng)有部分界面用 Vue 寫的,,夠高大上了么(Vue 的貢獻(xiàn)者因此都拿到了 NASA 2020 火星任務(wù)的 GitHub 徽章)?Google 的求職系統(tǒng) careers.google.com 是 Vue 寫的,,用它投過簡歷不,?蘋果 SwiftUI 的教程 Vue 寫的,,學(xué)原生開發(fā)的時(shí)候看過沒?LV 美國官網(wǎng) Nuxt/Vue 寫的,,買過幾個(gè)沒?你翻墻上 P 站解決生理需求的時(shí)候,,Vue 的 logo 也會(huì)亮起來,,這個(gè)流量又如何?
尤雨溪設(shè)計(jì)Vue的初衷是可以讓那些像他一樣非科班出身的人也可以簡單的編寫網(wǎng)頁,,不懂js的其他設(shè)計(jì)職業(yè)也可以參與其中,。只是可能情況有點(diǎn)出乎意料,這玩意火了,,而且現(xiàn)在還TND造成了"360行,,行行轉(zhuǎn)前端"的奇葩盛況。大量或少或無經(jīng)驗(yàn)的從業(yè)者通過Vue找到了工作,。個(gè)人認(rèn)為這是符合尤雨溪的初衷的,,因?yàn)楹芏鄾]有任何前端知識(shí)的人只需要通過極短的時(shí)間(相對(duì)其他語言和框架的學(xué)習(xí)成本)就可以達(dá)到找個(gè)小公司上班的水平。對(duì)此我只能說呵呵了,,哈哈哈,。
總結(jié):Vue是尤雨溪推出的前端開源框架,簡單講就是用于開發(fā)網(wǎng)站,,特點(diǎn)是簡單易學(xué),,能快速上手,目前廣泛應(yīng)用于中小企業(yè),,很多非計(jì)算機(jī)科班出身的同學(xué)通過Vue進(jìn)入了計(jì)算機(jī)行業(yè)工作,。
官網(wǎng)資料:https://cn.vuejs.org/v2/guide/index.html