一歪架、先來說說大家比較熟的vue把,你們知道vue1-vue2-vue3都經(jīng)歷了什么嗎?
1、vue2比vue1的改進
生命周期的改變:?beforeCompile 移除伶唯, 使用 created 替代憨攒,compiled 移除世杀,使用 mounted 替換等。肝集。瞻坝。
語法:新數(shù)組語法 (value, index) in list,并丟棄 $index 和 $key杏瞻。過濾器廢棄所刀,不再這樣寫?<div v-for="el in list | limitBy 10">{{ el }}</div>,改而在方法里自己做好分割捞挥。圍繞 DOM 的實例方法vm.$appendTo 移除浮创。?$dispatch 和 $broadcast 廢棄,前者用于向上級派發(fā)事件砌函,只要是它的父級(一級或多級以上)斩披,都可以在組件內(nèi)通過?$on?(或 events,2.x 已廢棄)監(jiān)聽到讹俊,后者相反雏掠,是由上級向下級廣播事件的。
2劣像、vue3比vue2的改進
使用了 proxy 替代 Object.defineProperty:Vue2 的雙休數(shù)據(jù)綁定是使用 Object.defineProperty 的 getter 和 setter乡话。 但是,Vue 3 將使用 ES2015 Proxy 作為其觀察者機制耳奕。 這消除了以前存在的警告绑青,使速度加倍,并節(jié)省了一半的內(nèi)存開銷屋群。而為什么使用 Proxy 替代 Object.defineProperty闸婴?Proxy 可以劫持整個對象,并返回一個新的對象芍躏。Proxy 不僅可以代理對象邪乍,還可以代理數(shù)組,還可以代理動態(tài)增加的屬性,節(jié)省內(nèi)存庇楞,速度加倍榜配。新增了hook api setup(),? vue3重寫虛擬DOM,新增靜態(tài)標(biāo)記優(yōu)化插槽生成吕晌,靜態(tài)樹提升蛋褥,靜態(tài)屬性提升【Σ担總結(jié)來說烙心,vue 3 按需編譯體積比2.0更小,性能也快1.2-2倍乏沸,它已經(jīng)能做到Dom diff 的時候淫茵,只對有變量的區(qū)域遍歷,靜態(tài)的節(jié)點直接復(fù)用對象不需要 diff蹬跃,更好的TS支持更先進的組件等等痘昌。。炬转。
二、react16.X-react17
react16原理算灸,babel-loader會預(yù)編譯JSX為React.createElement(...)
react17原理扼劈,React 17中的 JSX 轉(zhuǎn)換不會將 JSX 轉(zhuǎn)換為 React.createElement,而是自動從 React 的 package 中引入新的入口函數(shù)并調(diào)用菲驴。另外此次升級不會改變 JSX 語法荐吵,舊的 JSX 轉(zhuǎn)換也將繼續(xù)工作。在React 17中赊瞬,React將不再在后臺的文檔級別附加事件處理程序先煎。取而代之的是,它將它們附加到渲染您的React樹的根DOM容器:
const rootNode=document.getElementById('root');ReactDOM.render(, rootNode);
react hook :useState()巧涧、useEffect()薯蝎、useRef()等等。谤绳。占锯。是16.8以后新增的特性,他能讓你在不使用class 組件的情況下也能用class組件的特性
三缩筛、angular
Angular對我來說也一直是停留在1.0消略,2.0的時代。如果你不是經(jīng)常使用angular的話瞎抛,當(dāng)你重新關(guān)注它的時候艺演,你會發(fā)現(xiàn)它的最新版本已經(jīng)是Anguar 9了,要知道之前用了8年才發(fā)布了一個主版本,而現(xiàn)在4年時間已經(jīng)發(fā)布了8個版本胎撤。是因為現(xiàn)在Angular采用了語義本版本控制晓殊,每個6個月就會升級一個大版本。Angular 是一個由 Google維護的開源JavaScript框架哩照,用于在HTML和JavaScript中構(gòu)建Web應(yīng)用程序挺物,Angular最顯著的特征就是其整合性。涵蓋了M飘弧、V识藤、C/VM等各個層面,不需要組合次伶、評估其它技術(shù)就能完成大部分前端開發(fā)任務(wù)痴昧。Angular一些用法再上一篇小結(jié)果過了,感興趣可以看一看冠王。在這里就不細說了赶撰,我本人用的少可能大部分api都需要參考文檔。柱彻。豪娜。
四、3者的區(qū)別在哪呢哟楷?
Vue.js的特性如下:
1.輕量級的框架瘤载,易用
2.雙向數(shù)據(jù)綁定
3.指令化
4.組件化
<1>、與angularjs的區(qū)別
?相同點:
都支持指令:內(nèi)置指令和自定義指令卖擅。
都支持過濾器:內(nèi)置過濾器和自定義過濾器鸣奔。
都支持雙向數(shù)據(jù)綁定。
都不支持低端瀏覽器惩阶。
? ? 不同點:
? ? ? 1.更簡單易用挎狸,AngularJS的學(xué)習(xí)成本高,比如增加了Dependency Injection特性断楷,而Vue.js本身提供的API都比較簡單锨匆、直觀。
2.更靈活冬筒,比起 Angular更少專制统刮,它能讓你按照自己想要的方式構(gòu)建應(yīng)用,而非啥都的按照 Angular 框架如此账千。
? 3.性能更突出侥蒙,vue依賴追蹤的觀察系統(tǒng)并且異步列隊更新,所有的數(shù)據(jù)變化都是獨立地觸發(fā)匀奏。
<2>鞭衩、與React的區(qū)別
相同點:
react采用特殊的JSX語法,Vue.js在組件開發(fā)中也推崇編寫.vue特殊文件格式,對文件內(nèi)容都有一些約定论衍,
兩者都需要編譯后使用瑞佩。
中心思想相同:一切都是組件,組件實例之間可以嵌套坯台。
都提供合理的鉤子函數(shù)炬丸,可以讓開發(fā)者定制化地去處理需求。
都不內(nèi)置列數(shù)AJAX蜒蕾,Route等功能到核心包稠炬,而是以插件的方式加載。
在組件開發(fā)中都支持mixins的特性咪啡。
不同點:
? ? ? 1.性能更好:
Vue性能上更有優(yōu)勢首启,因為 Vue 的 Virtual DOM 實現(xiàn)相對更為輕量一些,整體大小比react.js更小更輕便
? ? ? 2.更易學(xué)更簡單:
react.JS 彩用SX語法撤摸,對語大部分工程師入手比較困難毅桃,需要要大量的時間去學(xué)習(xí)適應(yīng)這種新語法的形式,vue采用DOM模板的方法准夷,易看易用
? ? ? 3.優(yōu)化更好:react某個組件的狀態(tài)發(fā)生變化時钥飞,它會以該組件為根,重新渲染整個組件子樹衫嵌。如要避免不必要的子組件的重渲染读宙,你需要在所有可能的地方使用 PureComponent,或是手動實現(xiàn) shouldComponentUpdate 方法渐扮。vue都不用關(guān)心這些。