vuejs介紹
vue.js是一款輕量級的MVVM框架领曼,同時吸收了angular和react的優(yōu)點,強調了react組件化的概念輕松實現(xiàn)數(shù)據(jù)和展現(xiàn)的分離蛮穿;吸收了angular靈活的指令和頁面操作的一些方法庶骄;
1.近年來前端開發(fā)趨勢
-
舊瀏覽器逐漸淘汰,移動端需求增加践磅;
IE6-IE8不支持ES5特性单刁,vue核心實現(xiàn)利用Es5Object.defineProperty特性
IE9+、chrome、safari羔飞、firefox支持ES5特性肺樟,大多數(shù)(webkit內(nèi)核)移動端都支持ES5;
前端交互越來越多逻淌,功能越來越復雜 么伯;
-
架構從傳統(tǒng)后臺MVC向REST API+前端MV*遷移;
MV* { MVC MVP MVVM <---- Vue.js }
(數(shù)據(jù)和視圖是不能直接通信的卡儒,通過ViewModel通信田柔,ViewModel通常要實現(xiàn)observer觀察者,當數(shù)據(jù)發(fā)生變化ViewModel能夠觀察到數(shù)據(jù)的這種變化骨望,然后通知到對應的視圖做自動更新硬爆,而用戶操作視圖,viewModel也能監(jiān)聽到視圖的變化擎鸠,然后通知數(shù)據(jù)做改動缀磕;實現(xiàn)了數(shù)據(jù)的雙向綁定)
Model View ViewModel 數(shù)據(jù) 視圖 連接數(shù)據(jù)和視圖的中間媒介 javascript對象 DOM 觀察者
應用場景:
針對具有復雜交互邏輯的前端應用;
提供基礎的架構抽象劣光;
通過Ajax數(shù)據(jù)持久化袜蚕,保證前端用戶體驗;
好處:
當前端進行和數(shù)據(jù)做一些操作時候赎线,可以通過Ajax請求做數(shù)據(jù)持久化鲸郊,不刷新頁面疮鲫;只需要改動DOM里需要改動的數(shù)據(jù)和內(nèi)容;特別移動端應用,刷新頁面的代價太大赡磅,會重新加載很多資源;雖然有些資源會被緩存君丁,但是頁面DOM睛蛛、css、js都會被瀏覽器重新解析一遍文判,因此移動端頁面會做成SPA單頁應用过椎,在這一基礎上就出來了一些MVVM框架:Angular.js/react.js/vue.js;
2.vuejs介紹--什么是Vuejs及Vuejs生態(tài)
1.vuejs 它是一個輕量級MVVM框架,體積只有20多kb戏仓;
2.數(shù)據(jù)驅動+組件化(vue的核心思想)的前端開發(fā)疚宇;
3.GitHub超過25k+的star數(shù),社區(qū)完善赏殃;
3.Vue.js介紹--對比Angular敷待、React;
- 如何做技術選型仁热?
-
選型參考:
1.開源項目的社區(qū)如何榜揖;VueJS;/Angular.js/React.js都很不錯;
2.對比開源框架的其他方面举哟;Vue.js更輕量思劳,gzip后大小只有20k+(26K);
Angular.js gzip后大小56k;
-
React.js gzip后大小44k;
對于移動端來說妨猩,Vue.js更適合
-
Vue.js更易上手潜叛,學習曲線平穩(wěn);
- Angular入門是最難的册赛,概念太多钠导,完全顛覆了以前前端開發(fā)的模式和思維,還有一些概念像依賴注入森瘪,對一些前端完全不知道是什么牡属,Angular是一幫做java的工程師寫的,很多思想都沿用了后端的技術扼睬,對前端特別是新手前端是一個特別大的挑戰(zhàn)逮栅;
- React這點比起來比Angular好一些,React也有自己的一套JSX語法窗宇,React學習會附贈 React全家桶包括flux/redux/react-router學習曲線也是比較陡峭的措伐;
- Vue.js 上手就很簡單了,開發(fā)組件的語法更符合習慣军俊,官網(wǎng)的文檔非常詳細侥加,demo也簡單易懂,對于一個新手來說學習曲線是最平穩(wěn)的粪躬;
--吸取了兩家之長担败,借鑒了angular的指令和react的組件化;- 在vue.js語法總能看到angular和react影子镰官;
1.比如vue就借鑒了angular指令的概念提前,v-show/v-hide對angular的ng-show、ng-hide泳唠;
2.vue.js組件化思想和react組件化思想是一致的狈网;把一個頁面初始成一個組件樹,組件都會有完整的生命周期笨腥;
3.Vue還有很多自己的特點是其他兩個沒有的:計算屬性
- 在vue.js語法總能看到angular和react影子镰官;
-
4.Vue.js核心思想
數(shù)據(jù)驅動
組件化
-
數(shù)據(jù)驅動
DOM是數(shù)據(jù)的一種自然映射拓哺;View ViewModel Model DOM Listeners Directives DOM Vue實例 javascript
數(shù)據(jù)和視圖如何交互:
只要改變數(shù)據(jù)Vue.js通過Directives指令對DOM做一層封裝,當數(shù)據(jù)發(fā)生變化會通知指令去修改對應的DOM脖母,數(shù)據(jù)驅動DOM變化士鸥,DOM是數(shù)據(jù)一種自然映射;
Vue.js還會對操作做些監(jiān)聽,當我們修改視圖的時候镶奉,Vuejs監(jiān)聽到這些變化從而改變數(shù)據(jù);這樣就形成了數(shù)據(jù)的雙向綁定础淤;數(shù)據(jù)響應原理:
數(shù)據(jù)(model)改變驅動視圖(view)自動更新;
組件化:
1.擴展HTML元素哨苛,封裝可重用的代碼鸽凶;
2.vue.js每個組件都對應一個v-model,最終生成一個v-model的樹建峭,和DOM樹是一個一一對應的關系玻侥;
組件設計原則:
1.頁面上每個獨立的可視、可交互區(qū)域視為一個組件亿蒸;
比如:一個頁面頭部凑兰、尾部、一些可復用的區(qū)塊都可以抽象成組件边锁;
2.每個組件對應一個工程目錄姑食,組件所需要的各種資源在這個目錄下就近維護;
就近維護原則就體現(xiàn)了前端工程化思想茅坛,為前端開發(fā)提供了很好的分 策略音半,每個開發(fā)者都將清楚的知道自己所開發(fā)維護的工作單元,代碼存在對應的組件目錄中贡蓖,那個目錄下就可以找到工作單元所有的內(nèi)部邏輯曹鸠,樣式也好,JS也好斥铺,頁面結構都在那里彻桃,Vue.js中可以通過.Vue文件把組件依賴的模板、js晾蜘、樣式都寫在一個文件中邻眷,把組件化就近維護原則發(fā)揮到極致;
3.頁面不過是組件的容器笙纤,組件可以嵌套自由組合形成完整的頁面耗溜;
把頁面拆分成一個個組件;