歡迎大家持續(xù)關注葡萄城控件技術團隊博客,更多更好的原創(chuàng)文章盡在這里~~

相比于JavaScript開發(fā)人員的數量,目前JavaScript框架、類庫和工具的數量似乎更多一些。截至2017年5月,GitHub上的快速搜索顯示,有超過110萬個JavaScript項目。npmjs.org50萬個可用的軟件包,每月下載量近100億次。

本文將會討論目前最為流行的客戶端JavaScript框架、類庫和工具以及它們之間的基本差異。也許本文無法告訴你哪個是最好的,但是最適合自己項目的,就是最好的。

類庫

類庫是一個有組織的功能集合。典型的類庫包括字符串處理、日期、HTML DOM元素、事件、Cookie、動畫、網絡請求等功能。你可以自己實現一個函數,以便選擇該函數被調用時是否需要返回一個值。

類庫通常提供一種高級別的抽象方法,能夠幫助順利實現項目的細節(jié)部分。例如,Ajax通常依賴于XMLHttpRequest API,只需要幾行代碼就實現功能,只是瀏覽器之間存在細微的差異。類庫提供了更簡單的ajax()函數,因此開發(fā)者可以專注于更高級別的業(yè)務邏輯上。

類庫能夠使將開發(fā)時間縮短20%,開發(fā)者不必擔心細節(jié)實現。

但是也有缺點:

  • 類庫中的錯誤難以定位和修復

  • 開發(fā)團隊不能保證快速發(fā)布補丁

  • 補丁程序可能會更改API,導致大量代碼必須更改

框架

框架是應用程序的骨架。它要求以特定的方式來進行軟件設計,在某些節(jié)點上實現自己的邏輯??蚣芡ǔL峁┝耸录⒋鎯蛿祿壎ǖ裙δ?。

框架通常提供了比類庫更高層次的抽象,幫助快速構建項目的前80%。

框架的缺點:

  • 如果你的應用程序超出了框架的范圍,最后20%可能會很難

  • 框架更新很困難

  • 核心框架代碼和概念很少更新

工具

工具會幫助開發(fā)工作,但卻不是項目的組成部分。工具包括構建系統(tǒng)、編譯器、轉譯器、代碼分割器、圖像壓縮器、部署機制等。

工具幫助實現一個更容易的開發(fā)過程。例如,對比于CSS,許多編碼者更喜歡Sass,因為它提供了代碼分離、嵌套、渲染時變量、循環(huán)和函數。瀏覽器不了解Sass / SCSS語法,因此在測試和部署之前,必須使用適當的工具將代碼編譯為CSS。

類庫、框架和工具的區(qū)別

類庫、框架和工具之間的區(qū)別很小??蚣芸梢园ㄒ粋€類庫,類庫可以實現類似框架的方法,項目中任何一種工具都是必不可少的。所以不需要明確的區(qū)分類庫、框架和工具。

JavaScript框架和類庫

以下是按照流行程度進行的排序:

jQuery

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

jQuery


類型

類庫

網站

jquery.com

知識庫

github.com/jquery/jquery

當前版本

3.2.1

開發(fā)人員

jQuery團隊

發(fā)布日期

2006年8月

大小

最小30kb

用途

通用

使用度

72.4%的網站

隨著WordPress、ASP.NET和一些其它框架的發(fā)布,jQuery仍然是最常用的JavaScript類庫。它通過將CSS選擇器引入到DOM節(jié)點檢索加鏈來應用事件處理程序、動畫和Ajax調用,這徹底改變了客戶端的開發(fā)。

jQuery近年來備受青睞,對于需要少量JavaScript功能的項目來說,仍然是一個好選擇。

優(yōu)點:

  • 分布規(guī)模小

  • 學習曲線平緩,豐富的在線幫助

  • 簡潔的語法

  • 容易拓展

缺點:

  • 增加了原生API的速度開銷

  • 瀏覽器兼容性不好,但已得到改善

  • 用法扁平

  • 一些行業(yè)反對使用

Lodash 和 Underscore

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

Lodash


類型

類庫

網站

lodash.com/

知識庫

github.com/lodash/lodash/

當前版本

4.17.4

開發(fā)人員

John-David Dalton

發(fā)布日期

2012年4月

大小

最小4kb - 24kb

用途

通用

使用度

Underscore


類型

類庫

網站

underscorejs.org/

知識庫

github.com/jashkenas/underscore

當前版本

1.8.3

開發(fā)人員

Jeremy Ashkenas

發(fā)布日期

2009年10月

大小

最小6kb

用途

通用

使用度

Lodash和Underscore在本節(jié)一起談論。它們提供了數百個功能性的JavaScript實用程序來補充原生字符串、數字、數組和其它原始對象方法。雖然兩個類庫之間有一些重疊,但是不太可能在一個項目中同時使用這兩個類庫。

雖然兩個類庫在客戶端使用率很低,但是卻可以在服務器端的Node.js應用程序中使用這兩個類庫。

優(yōu)點:

  • 小而簡單

  • 良好的文檔易于學習

  • 與大多數類庫和框架兼容

  • 不擴展內置對象

  • 可以在客戶端或服務器上使用

缺點:

  • 有些方法只在ES2015及更高版本的JavaScript中可用。

AngularJS 1.x

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

AngularJS


類型

框架

網站

angularjs.org

知識庫

github.com/angular/angular.js

當前版本

1.6.4

開發(fā)人員

Google

發(fā)布日期

2010年10月

大小

144KB

用途

單頁應用程序

使用度

Angular是框架(或MVC應用程序框架)類列表中的第一個。目前最流行的Angular版本是1.x,它使用雙向數據綁定擴展HTML,同時解耦了DOM操作和應用程序邏輯。

盡管版本2(現在是版本4?。┮呀洶l(fā)布了,但是Angular 1.x仍在開發(fā)中。

優(yōu)點:

  • 一些大公司正在使用的流行框架

  • 開發(fā)現代Web應用程序的解決方案

  • 是標準MEAN棧(MongoDB,Express.JS,AngularJS,NodeJS)的一部分,有許多文章和教程可用

缺點:

  • 學習曲線陡峭

  • 大的代碼庫

  • 無法升級到Angular 2.x

Angular 2.x(現在是Angular 4.x)

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

Angular


類型

框架

網站

angular.io

知識庫

github.com/angular/angular.js

當前版本

4.1

開發(fā)人員

Google

發(fā)布日期

2016年9月

大小

最小450kb

用途

單頁面應用

使用度

Angular 2.0于2016年9月發(fā)布。這是一個完整的重寫,它引入了使用TypeScript創(chuàng)建的基于模塊化組件的模型。Angular 4.0于2017年3月發(fā)布。

Angular 2.x與v1版本截然不同,也不與其它版本兼容 - 也許Google應該給項目起一個不同的名字!

優(yōu)點:

  • 開發(fā)現代Web應用程序的解決方案

  • 是標準MEAN棧的一部分,盡管只有少量的教程可用

  • 對于熟悉靜態(tài)類型語言(如C#和Java)的開發(fā)人員,TypeScript提供了一些優(yōu)勢。

缺點:

  • 學習曲線陡峭

  • 大的代碼庫

  • 不能從Angular 1.x升級

  • 與1.x相比,Angular 2.x較難理解

React

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

React


類型

框架

網站

facebook.github.io/react/

知識庫

github.com/facebook/react

當前版本

15.5.4

開發(fā)人員

Facebook和貢獻者

發(fā)布日期

2013年3月

大小

21kb分鐘

用途

單頁應用程序

使用度

React是一個用于構建用戶界面的JavaScript類庫,也是去年最受關注的類庫。它專注于Model-View-Controller(MVC)開發(fā)的“View”部分,使用它可以輕松創(chuàng)建保留狀態(tài)的UI組件。它是實現虛擬DOM的首選類庫之一, 它的內存結構能夠有效地計算差異,頁面更新也更加有效。

統(tǒng)計顯示React的使用度似乎很低,因為它是在應用程序中使用而不是在網站。

優(yōu)點:

  • 小巧,高效,快捷靈活

  • 簡單的組件模型

  • 良好的文檔和在線資源

  • 可實現服務器端渲染

  • 目前受歡迎,經歷了快速增長

缺點:

  • 需要學習新的概念和語法

  • 構建工具很重要

  • 需要其它類庫或框架提供model和Controller部分

  • 與修改DOM的代碼和其它類庫不兼容

了解更多關于React the ES6 Way

Vue.js

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

Vue.js


類型

框架

網站

vuejs.org

知識庫

github.com/vuejs/vue

當前版本

2.0

開發(fā)人員

Evan You

發(fā)布日期

2014年2月

大小

最小19kb

用途

單頁面應用

使用度

Vue.js是一個用于構建用戶界面的輕量級漸進框架。它提供了一個類似React的虛擬DOM驅動視圖層,可以與其它類庫集成,用于構建強大的單頁面應用。該框架是由之前在AngularJS工作過的Evan You創(chuàng)建的,他提取了AngularJS中自己喜歡的部分。

Vue.js使用HTML模板語法將DOM綁定到實例數據。Model是在數據改變時更新view的純JavaScript對象。

優(yōu)點:

  • 可以快速使用,并且日益普及

  • 很容易提高高水平開發(fā)人員的滿意度

  • 依賴性小,性能好

缺點:

  • 一個較新的項目 - 風險可能會更大

  • 部分依賴開發(fā)人員進行更新

  • 相比于其它框架,資源較少

Backbone.js

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

Backbone.js


類型

框架

網站

backbonejs.org

知識庫

github.com/jashkenas/backbone/

當前版本

1.3.3

開發(fā)人員

Jeremy Ashkenas

發(fā)布日期

2010年10月

大小

最小8kb

用途

單頁面應用

使用度

Backbone.js是提供服務器端框架中常見的MVC結構的最早客戶端選項之一。它唯一的依賴是Underscore.js。

Backbone.js聲稱是一個類庫,因為它可以與其它項目集成,但是我覺得大多數開發(fā)人員都認為它是一個框架。

優(yōu)點:

  • 體積小,重量輕,復雜度低

  • 不添加HTML邏輯

  • 文件豐富

  • 采用了許多應用,包括Trello、WordPress.com、LinkedIn和Groupon

缺點:

  • 與AngularJS等其它框架相比,抽象度較低

  • 需要額外的組件來實現數據綁定等功能

  • 最新的框架已經不采用MVC架構了

Ember.js

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

Ember.js


類型

框架

網站

emberjs.com

知識庫

github.com/emberjs/ember.js

當前版本

2.15.0

開發(fā)人員

Ember team

發(fā)布日期

2011年12月

大小

最小95kb

用途

單頁面應用

使用度

Ember.js是基于Model-View-ViewModel(MVVM)模式的框架之一。它在單個包中實現模板化、數據綁定和類庫。

優(yōu)點:

  • 為客戶端應用程序提供了單一解決方案

  • 開發(fā)人員可以立刻提高開發(fā)效率 - 它使用jQuery

  • 良好的向后兼容性和升級選項

  • 采用了現代Web開發(fā)標準

缺點:

  • 大型分配式

  • 與其它正在向較小組件結構發(fā)展的框架相比,它十分的龐大

  • 學習曲線陡峭

Knockout.js

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

Knockout.js


類型

框架

網站

knockoutjs.com

知識庫

github.com/knockout/knockout

當前版本

3.4.2

開發(fā)人員

Steve Sanderson

發(fā)布日期

2010年7月

大小

最小59kb

用途

單頁面應用

使用度

Knockout.js是最早的MVVM框架之一,它確保了UI與底層數據保持同步,具有模板和依賴關系跟蹤。

優(yōu)點:

  • 小而輕便,無依賴

  • 優(yōu)秀的瀏覽器支持,可以支持到IE6

  • 良好的文檔資源

缺點:

  • 較大的項目可能變得很復雜

  • 發(fā)展已經放緩

  • 使用情況似乎在減弱

更多的框架和類庫

以下項目雖然不是特別流行,但值得考慮:

  • Polymer - 可以跨瀏覽器支持HTML5網頁組件的類庫

  • Meteor - 一個用于Web應用程序的全棧平臺

  • Aurelia  - 一種相對較新的,輕量級的跨平臺框架

  • Svelte - 一個將框架源代碼轉換為干凈JavaScript的新項目

  • Conditioner.js  - 一個基于狀態(tài)自動加載和卸載模塊的類庫

工具:執(zhí)行通用任務

構建工具自動執(zhí)行各種Web開發(fā)任務,例如預處理、編譯、優(yōu)化圖像、縮小代碼、代碼分析和運行測試等。任務可以在一個可執(zhí)行包中統(tǒng)一管理。

目前最受歡迎的工具如下:

Gulp.js

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

Gulp.js


網站

gulpjs.com

知識庫

github.com/gulpjs/gulp

當前版本

3.9.1

每月下載

300萬

雖然Gulp不是第一個任務執(zhí)行工具,它卻很快成為了最受歡迎的。Gulp使用易于閱讀的JavaScript代碼,將源文件加載到流中,并在將數據輸出到構建文件夾之前,通過各種插件管理數據。在任何其它選項之前檢查Gulp.js是簡單、快速和有趣的。

NPM

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

NPM


網站

npmjs.com

知識庫

github.com/npm/npm

當前版本

4.5.0

每月下載

300萬

npm是Node.js包管理器,但其腳本工具可用于運行通用任務。對于具有少量依賴關系的簡單項目來說,這是一個很好的選擇。然而,更復雜的任務可能會變得不太適用。

Grunt

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

Grunt


網站

gruntjs.com

知識庫

github.com/gruntjs/grunt

當前版本

1.0.1

每月下載

200萬

Grunt是第一批被大規(guī)模采用的JavaScript任務執(zhí)行工具之一,但其速度和復雜的JSON配置卻導致了Gulp的興起。現在這些問題已經得到了解決,Grunt仍然是一個受歡迎的選擇。

工具:模塊綁定

多個JavaScript文件的管理已經成為了一件繁瑣的事情。默認情況下,瀏覽器文件不會被編譯,因此其依賴關系必須以適當的順序進行加載或連接。雖然有像ES6模塊CommonJS這樣的選項,但是瀏覽器支持是有限的,因此模塊綁定變得十分重要。

WebPack

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

WebPack


網站

webpack.js.org

知識庫

github.com/webpack/webpack

當前版本

2.5.1

每月下載

600萬

Webpack支持所有流行的模塊選項,并已成為React開發(fā)的代名詞。雖然Webpack聲稱是一個模塊捆綁程序,但是已經可以用作通用任務運行程序了。

Browserify

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

Browserify


網站

browserify.org

知識庫

github.com/substack/node-browserify

當前版本

14.3.0

每月下載

260萬

Browserify支持Node.js正在使用的CommonJS模塊,它將所有模塊編譯成單個瀏覽器兼容的文件。

RequireJS

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

RequireJS


網站

requirejs.org

知識庫

github.com/jrburke/r.js

當前版本

2.3.3

每月下載

百萬

RequireJS是一種瀏覽器中的模塊加載器,它也可以在Node.js中使用。

工具:代碼分析

代碼分析工具用于分析代碼中潛在錯誤或偏離語法的標準。一個未閉合括號或未聲明的變量一定會被檢測出。

ESLint

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

ESLint


網站

eslint.org

知識庫

github.com/eslint/eslint

當前版本

3.19.0

每月下載

600萬

ESLint是一種可插拔的代碼分析工具。每個規(guī)則都是一個插件,因此可以根據個人喜好進行配置。

JSHint

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

JSHint


網站

jshint.com

知識庫

github.com/jshint/jshint

當前版本

2.9.4

每月下載

200萬

JSHint是一個靈活的JavaScript代碼分析工具,它很好的平衡了真正的錯誤和老舊的語法。

JSLint

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

JSLint


網站

jslint.com

知識庫

github.com/reid/node-jslint

當前版本

0.10.3

每月下載

50000

JSLint是最早的代碼分析工具之一,它實現了一套嚴格的默認規(guī)則。

工具:單元測試

測試驅動開發(fā)的任務要求需要編寫代碼來測試自己的代碼。目前有許多選擇,包括AvaTape 和Jest ,但目前最流行的三個工具是:

Mocha

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

Mocha


網站

mochajs.org

知識庫

github.com/mochajs/mocha

當前版本

3.3.0

每月下載

500萬

Mocha是一個JavaScript測試框架,可以在Node.js或瀏覽器中運行測試。它支持異步測試,并且經常與Chai配合使用,這樣可以使測試代碼以可讀取的方式表達。

Jasmine

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

Jasmine


網站

jasmine.github.io

知識庫

github.com/jasmine/jasmine-npm

當前版本

2.6.0

每月下載

200萬

Jasmine是一個行為驅動的測試工具,可以在瀏覽器中自動測試UI和交互。

QUnit

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

QUnit


網站

https://qunitjs.com/

知識庫

github.com/kof/node-qunit

當前版本

1.0.0

每月下載

25000

QUnit是一個單元測試框架,可以在輸入特定參數時,檢查函數結果。它還上報測試結果,確保沒有錯過特定的代碼分支。

總結與建議

目前最為流程的框架是React,同時其它的框架也在向著流行的趨勢發(fā)展。

如果需要一個安全的、通用的Web應用程序,可以考慮使用Vue.js。

整體框架已經不再受歡迎了,如果你需要對一個較大型項目進行嚴格的結構管理,AngularJS是一個不錯的選擇。目前大多數人堅持使用Angular 1.0版本,但是長遠來講,如果你愿意學習TypeScript,Angular 4.x版本是個更好的選擇。

jQuery雖然現在并不十分流行,在技術新聞中也很少會被提到,但不可否認它是積極開發(fā)的,同時也是網站和應用程序的有力工具。jQuery具有平緩的學習曲線,全球許多開發(fā)人員能夠很好地理解。

如果你想要冒險,可以試試Svelte這是一個有趣的客戶端/服務器框架,它可以在構建時預先呈現JavaScript,并且可以改變我們開發(fā)的方式。

工具的選擇因項目而異。雖然目前使用Gulp的開發(fā)者占大多數,但WebPack卻越來越受歡迎。同時你也不能錯過ESLintMocha等測試工具。

過去的十年,JavaScript經歷了革命性的發(fā)展。過去只有少量基本的類庫可以選擇,但是現在可供選擇的類庫已經鋪天蓋地。也許無法確定哪個類庫、框架和工具是最好的,但是最適合自己項目的,就是最好的。

如果本文錯過了你最喜歡的JavaScript類庫,框架或工具?歡迎在文末評論。

原文鏈接:https://www.sitepoint.com/top-javascript-frameworks-libraries-tools-use/

轉載請注明出自:葡萄城控件

http://www.cnblogs.com/powertoolsteam/p/front_end_framework_2017.html