根據(jù)Stack Overflow 2018開(kāi)發(fā)者調(diào)查報(bào)告,JavaScript是使用最廣泛的編程語(yǔ)言之一。感謝它不斷發(fā)展的框架生態(tài)系統(tǒng),為復(fù)雜和具有挑戰(zhàn)性的問(wèn)題找到最佳解決方案。
多年來(lái),業(yè)界已經(jīng)發(fā)布了大量 JavaScript 框架,怎樣進(jìn)行選擇可能是一個(gè)挑戰(zhàn)。如果你感到困惑,不知道應(yīng)該選哪個(gè),那么這篇文章你應(yīng)該讀一讀。
1、React
React 是今年最受喜愛(ài)的 JavaScript 的工程!每個(gè)人似乎都在談?wù)?ReactJS。每一個(gè)會(huì)議上,去年出席的會(huì)議,至少有兩個(gè)人是在討論 React。React 是開(kāi)源的,主要是由 facebook 借助其它公司的主要技術(shù)開(kāi)發(fā)出來(lái)的。React 描述自己是一個(gè) JavaScript 庫(kù),用于構(gòu)建用戶界面。
React 在 MVC 中,主要是 View。它完全專(zhuān)注于 MVC 那部分,無(wú)視應(yīng)用程序的其它部分。它提供了一個(gè)成分層,可以更容易使用UI元素,并將它們組合在一起。它抽象了 DOM,使其擅長(zhǎng)于優(yōu)化渲染,并允許使用 node.js 來(lái)表述 React ; 它實(shí)現(xiàn)了一個(gè)單向靈活的數(shù)據(jù)流,使得它更容易理解和使用其它框架。
2、Vue
Vue是Evan You在Google工作后使用AngularJS為多個(gè)項(xiàng)目中創(chuàng)建的。它在2018年首次發(fā)布,Evan分享了他創(chuàng)建Vue的動(dòng)機(jī),他說(shuō):“我想,如果我能提取出我真正喜歡Angular的那部分,然后構(gòu)建一些真正輕量級(jí)的東西會(huì)怎么樣呢?”Vue繼續(xù)在JavaScript開(kāi)發(fā)人員中得到廣泛采用,這種趨勢(shì)應(yīng)該還會(huì)繼續(xù)下去。根據(jù)npm調(diào)查,一些開(kāi)發(fā)人員更喜歡Vue而不是React,因?yàn)樗麄冇X(jué)得“在保持可擴(kuò)展性的同時(shí)更容易上手”。
Vue是一個(gè)允許開(kāi)發(fā)人員構(gòu)建交互式Web界面的庫(kù)。它提供類(lèi)似于React的數(shù)據(jù)反應(yīng)組件,具有簡(jiǎn)單靈活的API。與React或Angular不同,Vue的一個(gè)好處是它產(chǎn)生的干凈的HTML輸出。其他JavaScript庫(kù)往往會(huì)在代碼中留下散布著額外屬性和類(lèi)的HTML,而Vue會(huì)刪除它們以產(chǎn)生干凈的語(yǔ)義輸出。它通過(guò)官方維護(hù)的支持庫(kù)和包為復(fù)雜應(yīng)用程序提供高級(jí)功能,如路由,狀態(tài)管理和構(gòu)建工具。
3、Angular
Angular 是最強(qiáng)大、最高效、最開(kāi)源的 JavaScript 框架之一。該框架由Google 運(yùn)營(yíng),用于開(kāi)發(fā)單頁(yè)應(yīng)用(SPA)。這個(gè)開(kāi)發(fā)框架之所以出名,主要是因?yàn)樗鼮殚_(kāi)發(fā)人員提供了將JavaScript 與 HTML 和 CSS 結(jié)合起來(lái)的最佳條件。有超過(guò)五十萬(wàn)個(gè)網(wǎng)站如 google.com、youtube.com 等正在使用 Angular。
AngularJS 是一個(gè) MVC 類(lèi)型的框架,它提供了雙向的數(shù)據(jù)模型和視圖之間的綁定。這種數(shù)據(jù)綁定,允許在雙方只要有一個(gè)數(shù)據(jù)變化時(shí),自動(dòng)進(jìn)行更新。它使你可以構(gòu)建可重用的 View 組件。同時(shí),它也提供了一個(gè)服務(wù)框架,以便前后端服務(wù)的輕松通信。
什么時(shí)候使用 AngularJS?當(dāng)你正在建立一個(gè)復(fù)雜的 web 前端應(yīng)用程序,并且需要一個(gè)模塊化的框架來(lái)處理一切時(shí)。
4、Node.js
Node.js 是一個(gè)基于 Google Chrome 的 JavaScript 引擎構(gòu)建的開(kāi)源服務(wù)器端平臺(tái)。使用 NodeJS 的網(wǎng)站數(shù)量已超過(guò) 84,000 個(gè)。它是下載量最大的用于執(zhí)行 JavaScript 代碼的跨平臺(tái)運(yùn)行時(shí)環(huán)境之一。
Node.js遵循“JavaScript無(wú)處不在”的范例,通過(guò)圍繞單一編程語(yǔ)言統(tǒng)一Web應(yīng)用程序開(kāi)發(fā),而不是服務(wù)器端和客戶端腳本的不同語(yǔ)言。在JSConf 2018中,Dahl描述了他的服務(wù)器端JavaScript運(yùn)行時(shí)引擎的一些限制。其架構(gòu)的許多部分都受到限制,包括安全性以及如何管理模塊。作為解決方案,他引入了一個(gè)名為Deno的新軟件項(xiàng)目,這是一個(gè)V8 JavaScript引擎上的安全TypeScript運(yùn)行時(shí),旨在糾正Node.js中的一些設(shè)計(jì)缺陷。
5、React Native
React Native的故事始于2013年夏天,當(dāng)時(shí)是Facebook的內(nèi)部黑客馬拉松項(xiàng)目,后來(lái)在2015年開(kāi)源。React Native是一個(gè)JavaScript框架,用于構(gòu)建原生移動(dòng)應(yīng)用程序。正如您可能已經(jīng)從名稱中猜到的,React Native是基于我們前面討論過(guò)的React的。之所以稱之為“原生”,是因?yàn)槭褂肦eact native構(gòu)建的UI由原生UI小部件組成,這些小部件看上去和感覺(jué)上都與使用原生語(yǔ)言構(gòu)建的應(yīng)用程序一致。
本質(zhì)上,React Native將用Javascript/JSX編寫(xiě)的UI定義轉(zhuǎn)換成適合目標(biāo)平臺(tái)的原生視圖層次結(jié)構(gòu)。例如,如果我們正在構(gòu)建一個(gè)iOS應(yīng)用程序,它會(huì)將文本原語(yǔ)轉(zhuǎn)換為原生iOS UIView,在Android中,它會(huì)生成原生TextView。因此,即使我們正在編寫(xiě)JavaScript應(yīng)用程序,我們也不會(huì)在移動(dòng)設(shè)備的shell中嵌入Web應(yīng)用程序。我們正在獲得一個(gè)“真正的原生應(yīng)用”。
6、Three.JS
Three.JS是3D計(jì)算機(jī)圖形學(xué)框架之一。
Three.JS利用WebGL引擎,在Web瀏覽器中創(chuàng)建漂亮的3D計(jì)算機(jī)圖形。它擁有很多十分受歡迎的功能,其中包括特效和場(chǎng)景、相機(jī)、蒙皮網(wǎng)格(SkinnedMesh)和變形混合網(wǎng)格(morphblendmesh)動(dòng)畫(huà)、燈光等等。其龐大的社區(qū)集合了大量程序員和用戶,非常的活躍,因此這個(gè)項(xiàng)目將會(huì)穩(wěn)步發(fā)展。
7、Ionic Framework
Ionic Framework 由Drifty Co.創(chuàng)建,最初于2013年發(fā)布。它是一個(gè)開(kāi)源的前端SDK,用于使用熟悉的Web技術(shù)(如HTML5,CSS和JavaScript)開(kāi)發(fā)混合移動(dòng)應(yīng)用程序。借助Ionic,您將能夠構(gòu)建和部署跨多個(gè)平臺(tái)的應(yīng)用程序,例如原生iOS,Android,桌面和Web作為漸進(jìn)式Web應(yīng)用程序。
Ionic主要關(guān)注應(yīng)用程序的外觀或UI交互。這告訴我們,它并不意味著取代Cordova或您最喜歡的JavaScript框架。事實(shí)上,它仍然需要像Cordova這樣的原生包裝器來(lái)將您的應(yīng)用程序作為移動(dòng)應(yīng)用程序運(yùn)行。它使用這些包裝器來(lái)訪問(wèn)主機(jī)操作系統(tǒng)功能,如相機(jī),GPS,手電筒等,它由Cordova/PhoneGap等工具包裝。
8、 jQuery
jQuery是最古老的 JS 框架之一。這個(gè)框架已經(jīng)存在了 13 年之久,而且它仍然很強(qiáng)大。那么什么是 jQuery?
jQuery 是一個(gè)快速而簡(jiǎn)潔的 JavaScript 庫(kù),由 John Resig 在2006年創(chuàng)建,它有一個(gè)很好宗旨:寫(xiě)得少,做得多。它是一個(gè)跨瀏覽器的 JavaScript 庫(kù),旨在簡(jiǎn)化 HTML 的客戶端腳本。目前有超過(guò) 1900 萬(wàn)個(gè)網(wǎng)站正在使用jQuery!WordPress、Facebook、Google、IBM 和其他許多公司都依賴 jQuery 提供獨(dú)一無(wú)二的網(wǎng)絡(luò)瀏覽體驗(yàn)。
9、Backbone.js
Backbone 是一個(gè)很著名的簡(jiǎn)單的框架,融入了一個(gè)單一的 JavaScript 文件。Backbone 流行了一段時(shí)間。由 Jeremy Ashkenas 從CoffeeScript 和 Underscore 框架中開(kāi)發(fā)出來(lái)的。對(duì)于追尋小型架構(gòu)的團(tuán)隊(duì)來(lái)說(shuō),Backbone 是特別受歡迎的。因?yàn)樗麄冃⌒偷?Web 應(yīng)用是不需要使用像 AngularJS 和 Ember 這樣的大型框架的。
Backbone 提供了一個(gè)完整的 MVC 框架和路由。該模型允許鍵-值綁定和處理數(shù)據(jù)變化的事件。Models(和 Collections)可以連接到 RESTful API 中。Views 可以聲明事件處理,而路由器則可以非常出色地處理 URL 和狀態(tài)管理。在建立一個(gè)不提供太多功能和非必要復(fù)雜功能的單頁(yè)面應(yīng)用時(shí),能提供你所需的所有功能。
10、Ember
Ember 是一個(gè)獨(dú)立的 Web 應(yīng)用程序框架,專(zhuān)注于編碼效率。Ember 是比較受歡迎的,核心團(tuán)隊(duì)包括牛人 Yehuda Katz,他是 Ruby on Rails 和 jQuery 的核心團(tuán)隊(duì)之一。Ember 描述自己為一個(gè)不浪費(fèi)你的時(shí)間,能用于創(chuàng)建偉大 Web 應(yīng)用程序的框架。 這是非常有主見(jiàn),這也使你有了很多選擇。
Ember 也是一個(gè) MVC 框架。它包括一個(gè)模板和視圖引擎,保證了數(shù)據(jù)變化時(shí)的自動(dòng)更新,就像 AngularJS,Backbone 和 React 一樣。它包括的概念 web 組件,讓你用自己的標(biāo)簽來(lái)擴(kuò)展 HTML(就像 AngularJS)。它也有一個(gè)路由和模型引擎,能夠和 RESTful API 協(xié)同工作。