比起JavaScript開發人員的數量,目前JavaScript框架、類別庫和工具的數量似乎更多一些。截至2017年5月,GitHub上的快速搜尋顯示,有超過110萬個JavaScript專案。 npmjs.org有50萬個可用的軟體包,每月下載量近100億次。
本文將會討論目前最受歡迎的客戶端JavaScript框架、類別庫和工具以及它們之間的基本差異。也許本文無法告訴你哪個是最好的,但是最適合自己專案的,就是最好的。
類別庫是一個有組織的功能集合。典型的類別庫包括字串處理、日期、HTML DOM元素、事件、Cookie、動畫、網頁請求等功能。你可以自己實作一個函數,以便選擇該函數被呼叫時是否需要傳回一個值。
類別庫通常提供一種高階的抽象方法,能夠幫助順利實作專案的細節部分。例如,Ajax通常依賴XMLHttpRequest API,只需要幾行程式碼就實作功能,但瀏覽器之間有細微的差異。類別庫提供了更簡單的ajax()函數,因此開發者可以專注於更高層級的業務邏輯。
類別函式庫能夠使開發時間縮短20%,開發者不必擔心細節實作。
但也有缺點:
類別庫中的錯誤難以定位和修復
開發團隊無法保證快速發布補丁
修補程式可能會改變API,導致大量程式碼必須更改
學習過程中遇到什麼問題或想取得學習資源的話,歡迎加入學習交流群組
343599877,我們一起學習前端!
框架是應用程式的骨架。它要求以特定的方式來進行軟體設計,在某些節點上實現自己的邏輯。框架通常提供了事件、儲存和資料綁定等功能。
框架通常提供了比類別庫更高層次的抽象,幫助快速建立專案的前80%。
框架的缺點:
如果你的應用程式超出了框架的範圍,最後20%可能會很難
框架更新很困難
核心框架程式碼和概念很少更新
工具會幫助開發工作,但卻不是專案的組成部分。工具包括建置系統、編譯器、轉譯器、程式碼分割器、影像壓縮器、部署機制等。
工具幫助實現一個更容易的開發過程。例如,對比於CSS,許多編碼者更喜歡Sass,因為它提供了程式碼分離、巢狀、渲染時變數、循環和函數。瀏覽器不了解Sass / SCSS語法,因此在測試和部署之前,必須使用適當的工具將程式碼編譯為CSS。
類別庫、框架和工具之間的差異很小。框架可以包括一個類別庫,類別庫可以實作類似框架的方法,專案中任何一種工具都是必不可少的。所以不需要明確的區分類庫、框架和工具。
以下是依照流行程度的排序:
jQuery | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
類型 | 類別庫 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
jquery.com | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
github.com/jquery/jquery | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.2.1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
jQuery團隊 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
大小 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
用途 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
使用度 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# 隨著WordPress、ASP.NET和一些其它框架的發布,jQuery仍然是最常用的JavaScript類別函式庫。它透過將CSS選擇器引入到DOM節點檢索加鏈來應用事件處理程序、動畫和Ajax調用,這徹底改變了客戶端的開發。 jQuery近年來備受青睞,對於需要少量JavaScript功能的專案來說,仍然是一個好選擇。 優點:
缺點:
Lodash 和 Underscore
Lodash和Underscore在本節一起談論。它們提供了數百個功能性的JavaScript實用程式來補充原生字串、數字、陣列和其它原始物件方法。雖然兩個類別庫之間有一些重疊,但不太可能在一個專案中同時使用這兩個類別庫。 雖然兩個類別庫在客戶端使用率很低,但卻可以在伺服器端的Node.js應用程式中使用這兩個類別庫。 優點:
缺點:
優點: 一些大公司正在使用的流行框架
學習曲線陡峭
Angular 2.0於2016年9月發布。這是一個完整的重寫,它引入了使用TypeScript創建的基於模組化組件的模型。 Angular 4.0於2017年3月發布。 Angular 2.x與v1版本截然不同,也不與其它版本相容 – 也許Google應該為專案取一個不同的名字! 優點:
缺點:
React
統計顯示React的使用度似乎很低,因為它是在應用程式中使用而不是在網站上。 優點:
#需要學習新的概念和文法
Ember.js是基於Model-View-ViewModel(MVVM)模式的框架之一。它在單一套件中實現模板化、資料綁定和類別庫。 優點:
缺點:
Knockout.js
2010年7月 大小
#Knockout.js是最早的MVVM框架之一,它確保了UI與底層資料保持同步,具有範本和依賴關係追蹤。
良好的文件資源
知識庫github. com/gulpjs/gulp
npm是Node.js套件管理器,但其腳本工具可用於執行通用任務。對於具有少量依賴關係的簡單項目來說,這是一個很好的選擇。然而,更複雜的任務可能會變得不太適用。 Grunt
Grunt是第一批被大規模採用的JavaScript任務執行工具之一,但其速度和複雜的JSON配置卻導致了Gulp的興起。現在這些問題已經得到了解決,Grunt仍然是一個受歡迎的選擇。
每月下載600萬
|
requirejs.org | |
#github.com/jrburke/r.js |
ESLint是一種可插拔的程式碼分析工具。每個規則都是一個插件,因此可以根據個人喜好進行配置。
#JSHint | |
jshint.com | |
github.com/jshint/jshint | |
2.9.4 | |
#200萬 | |
JSLint |
jslint.com | |
##github.com/reid/node-jslint | |
0.10.3 | |
50000 | |
工具:單元測試 | 測試驅動開發的任務要求需要編寫程式碼來測試自己的程式碼。目前有許多選擇,包括Ava, Tape 和Jest ,但目前最受歡迎的三個工具是: |
網站 | #mochajs.org |
知識庫 |
github.com/mochajs/mocha |
目前版本 | 3.3.0 |
#500萬 | |
Mocha是一個JavaScript測試框架,可以在Node.js或瀏覽器中執行測試。它支援非同步測試,並且經常與Chai配合使用,這樣可以使測試程式碼以可讀取的方式表達。 | Jasmine |
QUnit是一個單元測試框架,可以在輸入特定參數時,檢查函數結果。它還上報測試結果,確保沒有錯過特定的程式碼分支。
目前最為流程的框架是React,同時其它的框架也在朝向流行的趨勢發展。
如果需要一個安全的、通用的網路應用程序,可以考慮使用Vue.js。
整體框架已經不再受歡迎了,如果你需要對一個較大型專案進行嚴格的結構管理,AngularJS是一個不錯的選擇。目前大多數人堅持使用Angular 1.0版本,但長遠來講,如果你願意學習TypeScript,Angular 4.x版本是個更好的選擇。
jQuery雖然現在不十分流行,在技術新聞中也很少會被提到,但不可否認它是積極開發的,同時也是網站和應用程式的有力工具。 jQuery具有平緩的學習曲線,全球許多開發人員能夠很好地理解。
如果你想要冒險,可以試試Svelte這是一個有趣的客戶端/伺服器框架,它可以在建置時預先呈現JavaScript,並且可以改變我們開發的方式。
工具的選擇因項目而異。雖然目前使用Gulp的開發者佔大多數,但WebPack卻越來越受歡迎。同時你也不能錯過ESLint和Mocha等測試工具。
以上是最新的前端框架、類別庫、工具比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!