1. 程式人生 > >Vue, React, AngularJS, and Angular2. 我們對流行JavaScript框架們的選擇

Vue, React, AngularJS, and Angular2. 我們對流行JavaScript框架們的選擇

一個有趣的事實是:IBM發表的2017年最值得學習的程式語言名單中,JavaScript榜上有名。這位IT巨頭指出,JS在網站中驚人地達到94.4%的使用率,而且“不太可能降低”。JavaScript能確保“對使用者非常友好的網頁,因為它負責整個web介面,包括動畫和互動”。不管你怎麼看,JavaScript很重要。

這也為潛在的Web開發人員指明瞭方向:如果你深入前端,你不得不在某些時刻面對JavaScript。並且正確的開發指南可能有助於此。

讓我們假設你知道JavaScript基礎知識。純JS(不是一無所知)的那種。如果假設是正確的(意思是你瞭解基礎),你可能對現代JavaScript框架們

的學習更感興趣。這些框架通常帶有預置的函式和一些構建應用的方法。

JavaScript Frameworks

雖然有些人可能認為框架有侷限性,但是世界上大多數開發者更喜歡使用框架(不要將它們與庫混淆),因為它們使工作更容易,更快速,在通常情況下更可靠。

好吧!說完這些,是時候該深挖一點兒了。

我們的開發團隊準備了他們每天使用的框架清單。雖然周圍肯定有更多的JavaScript框架,這些是我們最關注的。

接下來,你會看到我們所愛的技術及其各自特點的簡單概述。

大街上的酷小孩-Vue.js

Vue.js JavaScript framework

它就像一個還在讀高中的超級巨星。這不是一個成熟的技術,所以我們真的無法預言五年後,Vue會發生什麼。然而目前,它可能是每個會議議程中最引人注目的話題

如果你決定和JS極客喝兩杯,他肯定會談論Vue。如果Vue是個流行歌星,那麼現在它就是最紅的。如果…嗯,你明白我的意思。

虛的說差不多了,來點實際的。什麼是Vue.js?首先,它是本文中討論的所有JavaScript框架中最快最小的。它的語法和原理所需要的學習成本不是很高。此外,它還具有高覆蓋率的文件。你想要執行的操作絕大部分情況都已有文件說明。反之,如果一個操作沒有文件記錄,你能在線上找到解決方案的機率很小,因為Vue不如Angular或React更流行。

注意:Vue的發音和“view”一樣。

隨便挑5個Vue.js的特性說一下:

  • 便於擴充套件的外掛系統。
  • 擁有在使用服務端渲染時的庫(Nuxt.js)。
  • 支援範圍樣式。
  • 有一個CLI工具,允許你通過先進的前端工作流設定,快速構建單頁應用。
  • 被加入Laravel5.4的新特性中,用來處理前端模板

就像React一樣,Vue.js僅處理檢視層。也就是,它讓開發人員自己實現他們的業務邏輯。它還實現了Flux架構:Vuex。作為我們的隊友, Maciej Kolodziejczak說:

在我看來,Vuex比React的Redux使用起來更好,更容易。

此外,Vue.js在Chrome中擁有最好的開發者工具,並且Weex也使用Vue的語法,它是一個通過JavaScript構建原生應用的框架,也是React Native的競爭對手。值得注意的是,Weex並不太完善,特別是對於商業專案。目前,它更多的是一個方案而不是一個真正的技術。

對開發者來說,Vue.js的優勢在於:

  • 易於學習和理解,能快速開發應用
  • 與Laravel整合,所以具有Vue知識的開發人員對使用Laravel開發應用的後端團隊有所補充
  • 擁有非常方便的CLI工具,可以快速啟動
  • 有很多額外的模組,如路由器和狀態管理工具;雖然不如其他框架那麼多

對客戶來說,Vue.js的優勢在於:

  • 降低前端應用成本,乃至全功能web應用的成本(在使用Laravel和Vue.js的組合時)
  • 在保證穩定性的同時,是一個快速可靠的解決方案
  • 較小的模組很適用,如日曆,聯絡人表單或小部件

開發者滿意度最高-React.js

React.js JavaScript framework

React是由Facebook的Jordan Walke建立的,GitHub的最流行框架中排名第5。然而,React.js(以及React Native)最火爆的時間點是在2015年。

State of JS調查顯示React的開發者滿意度最高,達到92%。Vue跟它在同一個級別。根據調查,React的開發者較平均水平來說,在決定哪個技術配套使用前,會嘗試多種其他技術組合。

隨便挑5個React.js的特性說一下:

  • 框架只負責”View”層,這意味著其它業務邏輯是完全解耦的,並且能以任何方式來實現。
  • 與框架相關的Redux是一個非常棒的類Flux架構的實現。
  • 模板方面,框架可以使用JSX語法,這個語法在剛上手時可能會有一點點難度。
  • 開發者掌握React.js的知識後,可以直接用於基於React Native的移動客戶端開發。

React對VirtualDOM的使用,以及由此獲得的高效能廣受開發者好評。經常使用框架的開發者也是這與這項技術相關的龐大社群的重要組成部分。React的快速發展,除了 Facebook的維護外,也要感謝開源專案以及第三方的模組。

此外,隨著React將會有一個能夠向後相容的重寫版React Fiber的訊息放出,React的”第二春”很快就會到來。

對開發者來說,React的優勢在於:

  • 龐大且活躍的社群
  • 並非一個大而全的框架
  • JSX這種新的JavaScript語法,也是一個不錯的優點
  • 相關的開發工具也很不錯
  • 強制使用最新的最佳實踐

對客戶來說,React的優勢在於:

  • 大量的開發者熟悉這個框架
  • React Native使得Web應用的邏輯可以複用於移動客戶端
  • 有足夠多的使用和測試場景來保證框架本身幾乎沒有bug和錯誤

智慧長老-AngularJS

AngularJS JavaScript framework

Google在2009年第一次釋出了AngularJs框架,鼓勵使用宣告式程式設計方法去建立使用者介面和連線各種元件,另一方面,指令式的程式設計用於實現程式的邏輯。

Brat Tech公司的Miško Hevery是這個技術的真正作者,當時,它被建立為線上JSON儲存服務背後的軟體。但是業務沒有搞起來,所以公司放棄了這個想法,並將AngularJs作為一個開源庫釋出。

AngularJS使用雙向資料繫結的方式,適配和擴充套件了傳統的HTML來呈現動態內容。

所有這些可能聽起來很有意思,事實是AngularJs已經有點老了 實際上。它是我們描述的框架裡最老的了,大ReactJS4歲,Vue.js5歲,比Angular2年長了7歲之多。

儘管如此,他擁有Github上最多的貢獻者(1,562個),隨後是ReactJS,Angular2,Vue.js。

不可否認,AngularJS有一個陡峭的學習曲線,這個缺點在某種程度上被一個大型社群抵消,保證開發人員可能遇到的大多數問題存在解決方案。

隨便說AngularJS的5個特性

  • 仍然有許多專案使用AngularJS,所以瞭解AngularJS方便你維護這些專案。
  • 為不想使用新的Angular或Ember.js的團隊提供可行且穩定的解決方案。
  • 使用髒值檢查(digest cycle);與觀察者模式相比孰優孰劣取決於你的需求。
  • PlayStation 3上的YouTube應用是用AngularJS開發的。
  • 以HTML為中心。

AngularJS是SPA中最常用的JavaScript框架之一,也是企業級應用的一個很好的選擇。但是它確實很老了,大多時候是被老舊的應用採用。

AngularJs對開發者來說的”優”點:

  • 在2017年,如果你還沒有使用它,你完全可以忽略他了。
  • 如果您需要更多功能的話,請使用新的Angular或Ember。

AngularJS對使用者來說的”優”點:

  • 主要維護尚未準備好或無法獲得足夠重寫的舊應用。
  • 由於框架複雜性,建立更復雜應用的成本很高。

(譯者注:各種黑)

Angular2(或簡稱Angular)

儘管在不挖掘原始碼的前提下,很難完全瞭解Angular2的概念,它是一個非常強大的框架 內建了相當多的功能。

以AngularJS為基礎,使用Typescript重寫。與以前的版本相比,它沒有scope或controllers的概念。相反,它使用元件層次結構化作為其主要架構概念。支援動態載入,改進了依賴注入,並提供更為簡單的路由和非同步模板編譯機制。

隨便說Angular2的5個特性

  • 由TypeScript編寫,允許開發人員使用TypeScript,Dart或純粹的ECMAScript。
  • 元件的模式利用了TS類和裝飾器。
  • 陡峭的學習曲線
  • 開發過程很快。
  • 高階的的測試特性。

基本上,Angular可以擺脫AngularJS中存在的不必要的複雜性。然而,許多人認為,即使用CLI,單個開發人員的配置和啟動過程仍然可能太長。

In’saneLab的開發團隊也不太喜歡提供文件,特別是對於JS和Dart。另一方面,他們又喜歡將技術分解成很多模組。

Angular對開發者的優點:

  • 你喜歡TypeScript就開心了
  • 強制規定編寫程式碼的方式,使得它成為與多個開發人員合作的好選擇
  • 使用同一個庫開發移動和桌面應用
  • 對於具有很多程式碼的單頁應用是個不錯的解決方案

Angular對客戶來說的優點:

  • 使用該框架構建企業應用可能會降低成本
  • 大量開發人員已經知道如何使用框架

有最好的 Javascript 框架這一說麼?

想要一個簡單的答案? 沒有。這跟公司目標、需求、以及最終的功能都有關係。舉例來說,Angular2更像是一個百寶箱,特別適合大型專案。它非常複雜,並且需要花很多時間來全面的學習和掌握(但比AngularJS要簡單一些)。但使用以JavaScript為核心的React,開發者就能快速高效得拼湊出一些有用的東西。

每個框架都在以不同的方式以實現適合用於不同場景的Web應用開發,包括MVP、創業公司和商業場景。

因此你應該考慮找到這樣一個人,他能幫你選擇適用於開發並且能夠跟得上業務發展需要的技術。

而我們恰好具備這樣的能力。

相關推薦

Vue, React, AngularJS, and Angular2. 我們流行JavaScript框架選擇

一個有趣的事實是:IBM發表的2017年最值得學習的程式語言名單中,JavaScript榜上有名。這位IT巨頭指出,JS在網站中驚人地達到94.4%的使用率,而且“不太可能降低”。JavaScript能確保“對使用者非常友好的網頁,因為它負責整個web介面,包括動畫和互動”。不管你怎麼看,JavaScrip

vueangularjsreact的異同點

vue和angularjs:1、兩者都支援過濾器(自定義過濾器),都支援指令(自定義指令),實現雙向繫結的時候都比較簡答,不像react那樣麻煩。2、兩者都不支援IE8以下的瀏覽器。3、vue相對於angular來說要更容易上手,初學者開啟菜鳥可以看看,直接看官網也可以,an

Vue Angular React 全面對比,我們該選誰?

推薦使用:Vue.js > ReactJS > Angular 2 > AngularJS 概要: 現在, Vue 還沒有 React (由 Facebook 維護) 或者 Angular 2 (受到 Google 的支援) 流行。不過,許

[React] Create a Virtualized List with Auto Sizing Cells using react-virtualized and CellMeasurer

color react fault mail osi rem owin logs ati In this lesson we‘ll use CellMeasurer and CellMeasurerCache to automatically calculate and c

Vue vs React: Javascript 框架

實的 row 元素 而不是 展示 看看吧 too 虛擬表 tro 正如我們之前提到的,WordPress 的核心團隊正爭論著為應該將哪款(前端框架)加入現在的架構之中。目前看來,暫時脫穎而出的是React與Vue.js,社區中的很多成員正權衡著這兩款框架的利弊。 那到

對於視頻矩陣的接口,我們“她”有不少的誤解

視頻矩陣視頻矩陣的類型非常多,其中有一個區別設備的方式就是按照接口的不同去區別不同類型的視頻矩陣。目前在視頻矩陣中,主要的接口有DVI、HDMI、VGA。很多人受到一些有意無意的技術誤導,對這些接口產生了一些技術誤解。那麽這三種接口之間有什麽區別呢?拋開你的誤解,正確認識DVI、HDMI、VGA。 一、VGA

Web前端/全棧核心(html5/css3/js/vue/react/angular/es6/node)觀看筆記

出現 屬性 elf sel ram 新窗口 targe 位置 angular a標簽中的超鏈接,需要加 http:// 否則會出現頁面找不到。 iframe中添加a標簽,a標簽中的target屬性可以控制即將打開的頁面,在那個位置顯示。 _blank

是什麽讓我們培訓機構,又愛又恨

培訓機構 就業 課程 又到了一年一度萬眾矚目的高考時節,各種高考新聞映入眼簾,XX地區再度迎來傳統的“送考節,”11輛“666”牌號高考專車,早上8點08分,萬名家長夾道歡送,警車開道護航,這樣的新聞比比皆是。先不評論這樣的做法是對是錯,只是可憐×××,誰不希望自己的兒女鯉魚躍龍門,大鵬展翅飛。家

vue如何根據返回的值元素進行樣式渲染

port ddc 渲染 ima info 計算 優先 efault 不同 1、最終顯示樣式: 需要:根據任務狀態值,顯示不同顏色的原點表示任務狀態,以及對優先級的數據,進行☆標記 2、代碼實現:   在<el-table-column>中需要顯示的內容前面

vue ,v-for循環象,不是深度克隆? 數據改變了但是頁面元素沒有更新。問題解決

深度克隆 method obj created class () assign 1.5 ssi <div id="app"> <ul > <li v-for="(val,key,idx) in list" >

第一章 為什麽我們機器學習感興趣?(六)

銷售 學習 智能算法 實體 對象 計算 互聯 行為模式 生活 註:本書屬作者免費翻譯,如有版權問題,請聯系我刪除。如有轉載,請註明出處。 六、所有這些數據:數據地震 所有電腦化機器和服務所產生的數據曾經都是數字化技術的副產品,計算機科學家已經對數據庫進行了大量研究以

使用vue中的axios後,例項中的data進行賦值的問題

總結一下我遇到的一個糾結很久的問題。 在專案中需要用到後臺的資料對前端渲染,使用到了vue整合的axios,使用vue中的鉤子函式在頁面元件掛載完成之後向後臺傳送一個get請求然後將返回後的資料賦值data()中定義的屬性: 執行後前端報錯: 原因: 在請求執行成功後執行

vue react angular比較

VUE Vue.js(讀音 /vjuː/,類似於 view) 是一套構建使用者介面的漸進式框架。與其他重量級框架不同的是,Vue 採用自底向上增量開發的設計。Vue 的核心庫只關注檢視層,它不僅易於上手,還便於與第三方庫或既有專案整合。另一方面,當與單檔案元件和 Vue 生

React Hooks 可以為我們帶來什麼,及為什麼我覺得React才是前端的未來

簡單說明一下,react hooks 是一個已經在提議中的新功能,預計會隨著React 16.7.0一起釋出。 /以上所述所有React均指ReactJS,下述會用React簡稱/ 要明白什麼是React Hooks,那可能先了解一下它的兩個替代品HOC和FaCC/Render Props HOC(Hig

小程式,vue,react寫法區分

 1. 標籤內屬性:   vue:  :key = "index"   (直接字串) react: key={index}   (單括號) 小程式: key="{{index}}"   (字串內雙括

2018年11月09日 關於Vue的過濾器 and 自定義指令—基礎配置 and 配置傳參及修飾符

1、過濾器 //在html下的程式碼 <div id="app"> <div> <input type="text" v-model="len" />mm {{len | meter}} </div

演化:這五年裡,我們架構師職責的思考與定位

最近兩年,隨著網際網路紅利的消失,對於人才需求似乎已失去往年那種脣槍舌劍的感覺,但我卻發現,無論在社交平臺,還是技術大會,又有人對 “架構師是用來幹嘛的?” 這樣的偽命題開始津津樂道,緣由也許是無事生非?還是抒發感情?又有誰在乎呢。 相信任何一家含有技術屬性的企業,或多或少都會有一

React Conf 2018 專題 —— React Today and Tomorrow PART I 視訊中英雙語字幕

最近在 掘金翻譯計劃 校對了一篇 Dan Abramov 的關於 React Hooks 的文章,在 Sophie Alpert 和 Dan 在 React Conf 2018 上對 Hooks 的提案之後, Hooks 非常火。想到由於原視訊在 Youtube 上的原因導致大部分小夥伴沒法觀看,而且官

vue:非同步async and await與this.nextTick()的使用

專案例子: async focusInput (index) { await this.$nextTick(() => { let el = this.$refs[`scopeInput-${index}`].$el let input = el.querySe

vue:非同步async and await

async 非同步,會再最後執行 async function timeout() { return 'hello world' } console.log(timeout()); console.log('先執行'); 如果async 函式中有返回一個值 ,當呼叫該函式時