国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

AngularReact和Vue的對比

來源:懂視網 責編:小采 時間:2020-11-27 20:13:27
文檔

AngularReact和Vue的對比

AngularReact和Vue的對比:前端這幾年的技術發展很快,細分下來,主要可以分成四個方面:1.開發語言技術,主要是ES6&7,coffeescript,typescript等; 2.開發框架,如Angular,React,Vue.js,Angular2等; 3.開發工具的豐富和前端工程化,像Grunt,Gulp,Webpack,
推薦度:
導讀AngularReact和Vue的對比:前端這幾年的技術發展很快,細分下來,主要可以分成四個方面:1.開發語言技術,主要是ES6&7,coffeescript,typescript等; 2.開發框架,如Angular,React,Vue.js,Angular2等; 3.開發工具的豐富和前端工程化,像Grunt,Gulp,Webpack,

前端這幾年的技術發展很快,細分下來,主要可以分成四個方面:

1.開發語言技術,主要是ES6&7,coffeescript,typescript等;
2.開發框架,如Angular,React,Vue.js,Angular2等;
3.開發工具的豐富和前端工程化,像Grunt,Gulp,Webpack,npm,eslint,mocha這些技術;
4.前端開發范圍的擴展,如服務端的nodejs,express,koa,meteor,GraphQL;移動端和跨平臺的PhoneGap,ionic,ReactNative,Weex;計算機圖形學和3維建模領域的WebGL(three.js等);可視化與數據分析領域的d3.js等;包括瀏覽器不斷開放的更多新特性和接口比如svg,canvas,藍牙,電池,本地存儲,service worker,Houdini等新的API能力,以及像WASM這樣的底層優化技術;

就開發框架這塊,Angular(1&2),React,Vue目前占據著主流地位而且會相持比較長的一段時間,所以這里對比一下這三門技術,以便之后的技術選型。

一 數據流

數據綁定

Angular 使用雙向綁定即:界面的操作能實時反映到數據,數據的變更能實時展現到界面。

實現原理:

$scope變量中使用臟值檢查來實現。像ember.js是基于setter,getter的觀測機制,

$scope.$watch函數,監視一個變量的變化。函數有三參數,”要觀察什么”,”在變化時要發生什么”,以及你要監視的是一個變量還是一個對象。

使用ng-model時,你可以使用雙向數據綁定。
使用$scope.$watch(視圖到模型)以及$scope.$apply(模型到視圖),還有$scope.$digest

調用$scope.$watch時只為它傳遞了一個參數,無論作用域中的什么東西發生了變化,這個函數都會被調用。在ng-model中,這個函數被用來檢查模型和視圖有沒有同步,如果沒有同步,它將會使用新值來更新模型數據。

雙向綁定的三個重要方法:

$scope.$apply()

$scope.$digest()

$scope.$watch()

在angularjs雙向綁定中,有2個很重要的概念叫做dirty check,digest loop,dirty check(臟檢測)是用來檢查綁定的scope中的對象的狀態的,例如,在js里創建了一個對象,并且把這個對象綁定在scope下,這樣這個對象就處于digest loop中,loop通過遍歷這些對象來發現他們是否改變,如果改變就會調用相應的處理方法來實現雙向綁定

Vue 也支持雙向綁定,默認為單向綁定,數據從父組件單向傳給子組件。在大型應用中使用單向綁定讓數據流易于理解。

臟檢測的利弊

和ember.js等技術的getter/setter觀測機制相比(優):
getter/setter當每次對DOM產生變更,它都要修改DOM樹的結構,性能影響大,Angular會把批量操作延時到一次更新,性能相對較好。

和Vue相比(劣):

Vue.js 有更好的性能,并且非常非常容易優化,因為它不使用臟檢查。Angular,當 watcher 越來越多時會變得越來越慢,因為作用域內的每一次變化,所有 watcher 都要重新計算。并且,如果一些 watcher 觸發另一個更新,臟檢查循環(digest cycle)可能要運行多次。 Angular 用戶常常要使用深奧的技術,以解決臟檢查循環的問題。有時沒有簡單的辦法來優化有大量 watcher 的作用域。Vue.js 則根本沒有這個問題,因為它使用基于依賴追蹤的觀察系統并且異步列隊更新,所有的數據變化都是獨立地觸發,除非它們之間有明確的依賴關系。唯一需要做的優化是在 v-for 上使用 track-by。

React-單向數據流

MVVM流的Angular和Vue,都是通過類似模板的語法,描述界面狀態與數據的綁定關系,然后通過內部轉換,把這個結構建立起來,當界面發生變化的時候,按照配置規則去更新相應的數據,然后,再根據配置好的規則去,從數據更新界面狀態。

React推崇的是函數式編程和單向數據流:給定原始界面(或數據),施加一個變化,就能推導出另外一個狀態(界面或者數據的更新)。

React和Vue都可以配合Redux來管理狀態數據。

二 視圖渲染

Angular1

AngularJS的工作原理是:HTML模板將會被瀏覽器解析到DOM中, DOM結構成為AngularJS編譯器的輸入。AngularJS將會遍歷DOM模板, 來生成相應的NG指令,所有的指令都負責針對view(即HTML中的ng-model)來設置數據綁定。因此, NG框架是在DOM加載完成之后, 才開始起作用的。

React

React 的渲染建立在 Virtual DOM 上——一種在內存中描述 DOM 樹狀態的數據結構。當狀態發生變化時,React 重新渲染 Virtual DOM,比較計算之后給真實 DOM 打補丁。

Virtual DOM 提供了函數式的方法描述視圖,它不使用數據觀察機制,每次更新都會重新渲染整個應用,因此從定義上保證了視圖與數據的同步。它也開辟了 JavaScript 同構應用的可能性。

在超大量數據的首屏渲染速度上,React 有一定優勢,因為 Vue 的渲染機制啟動時候要做的工作比較多,而且 React 支持服務端渲染。

React 的 Virtual DOM 也需要優化。復雜的應用里可以選擇 1. 手動添加 shouldComponentUpdate 來避免不需要的 vdom re-render;2. Components 盡可能都用 pureRenderMixin,然后采用 Flux 結構 + Immutable.js。其實也不是那么簡單的。相比之下,Vue 由于采用依賴追蹤,默認就是優化狀態:動了多少數據,就觸發多少更新,不多也不少。

React 和 Angular 2 都有服務端渲染和原生渲染的功能。

Vue.js 不使用 Virtual DOM 而是使用真實 DOM 作為模板,數據綁定到真實節點。Vue.js 的應用環境必須提供 DOM。Vue.js 有時性能會比 React 好**,而且幾乎不用手工優化。

三 性能與優化

性能方面,這幾個主流框架都應該可以輕松應付大部分常見場景的性能需求,區別在于可優化性和優化對于開發體驗的影響。Vue 的話需要加好 track-by 。React 需要 shouldComponentUpdate 或者全面 Immutable,Angular 2 需要手動指定 change detection strategy。從整體趨勢上來說,瀏覽器和手機還會越變越快,框架本身的渲染性能在整個前端性能優化體系中,會漸漸淡化,更多的優化點還是在構建方式、緩存、圖片加載、網絡鏈路、HTTP/2 等方面。

四 模塊化與組件化

Angular1 -> Angular2

Angular1使用依賴注入來解決模塊之間的依賴問題,模塊幾乎都依賴于注入容器以及其他相關功能。不是異步加載的,根據依賴列出第一次加載所需的所有依賴。

可以配合類似于Require.js來實現異步加載,懶加載(按需加載)則是借助于 ocLazyLoad 方式的解決方案,但是理想情況下應該是本地框架會更易懂。

Angular2使用ES6的module來定義模塊,也考慮了動態加載的需求。

Vue

Vue中指令和組件分得更清晰。指令只封裝 DOM 操作,而組件代表一個自給自足的獨立單元 —— 有自己的視圖和數據邏輯**。在 Angular1 中兩者有不少相混的地方。

React

一個 React 應用就是構建在 React 組件之上的。
組件有兩個核心概念:props,state。
一個組件就是通過這兩個屬性的值在 render 方法里面生成這個組件對應的 HTML 結構。

傳統的 MVC 是將模板放在其他地方,比如 script 標簽或者模板文件,再在 JS 中通過某種手段引用模板。按這種思路,想想多少次我們面對四處分散的模板片段不知所措?糾結模板引擎,糾結模板存放位置,糾結如何引用模板。

React 認為組件才是王道,而組件是和模板緊密關聯的,組件模板和組件邏輯分離讓問題復雜化了。所以就有了 JSX 這種語法,就是為了把 HTML 模板直接嵌入到 JS 代碼里面,這樣就做到了模板和組件關聯,但是 JS 不支持這種包含 HTML 的語法,所以需要通過工具將 JSX 編譯輸出成 JS 代碼才能使用(可以進行跨平臺開發的依據,通過不同的解釋器解釋成不同平臺上運行的代碼,由此可以有RN和React開發桌面客戶端)。

五 語法與代碼風格

React,Vue,Angular2都支持ES6,Angular2官方擁抱了TypeScript這種 JavaScript 風格。

React 以 JavaScript 為中心,Angular 2 依然保留以 HTML 為中心。Angular 2 將 “JS” 嵌入 HTML。React 將 “HTML” 嵌入 JS。Angular 2 沿用了 Angular 1 試圖讓 HTML 更強大的方式。

React 推薦的做法是 JSX + inline style,也就是把 HTML 和 CSS 全都整進 JavaScript 了。Vue 的默認 API 是以簡單易上手為目標,但是進階之后推薦的是使用 webpack + vue-loader 的單文件組件格式(template,script,style寫在一個vue文件里作為一個組件)

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

AngularReact和Vue的對比

AngularReact和Vue的對比:前端這幾年的技術發展很快,細分下來,主要可以分成四個方面:1.開發語言技術,主要是ES6&7,coffeescript,typescript等; 2.開發框架,如Angular,React,Vue.js,Angular2等; 3.開發工具的豐富和前端工程化,像Grunt,Gulp,Webpack,
推薦度:
標簽: VUE 比較 對比
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 免费的黄色毛片 | 国产九区 | 国产精品日韩欧美一区二区三区 | 国产网站精品 | 亚洲欧美中文日韩综合 | 青青热久久综合网伊人 | 男女全黄一级带免费 | 91热成人精品国产免费 | 精品国产综合区久久久久99 | 亚洲视频一区二区 | 五月婷婷啪啪 | 成人精品第一区二区三区 | 国产精品免费视频网站 | 欧美精品一二区 | 日韩成人免费在线 | 国产91精品久久久久999 | 中文字幕一区久久久久 | 日本中文字幕有码 | 亚洲一区二区三区夜色 | 日韩在线小视频 | 久久91av | 久久不射网 | 亚洲好骚综合 | 成人久久久观看免费毛片 | 亚洲三级在线播放 | 最新精品在线视频 | 国产不卡在线 | 又黄又爽视频在线观看 | 国产亚洲视频在线观看 | 视频一区久久 | 久久2| 色综合天天娱乐综合网 | 亚洲va欧美ⅴa国产va影院 | 日韩www视频 | 国产网站在线 | 精品视频一区二区三区四区 | 国产国语一级毛片中文 | 91精品国产高清久久久久久91 | 国产精品久久久久999 | 国产有码视频 | 夜夜操网|