VOOZH about

URL: https://read01.com/kEjOLJg.html

⇱ 2017年最佳JavaScript框架,庫和工具 - 壹讀


Saturday, Apr 11, 2026

2017年最佳JavaScript框架,庫和工具

2017/08/12 來源:輝煌科技點

JavaScript的框架、庫和工具的冒出似乎有點超出大家的想像,截止到2017年5月,在GitHub上搜索JavaScript項目,你會發現其已經超過了110萬;npmjs.org上有50萬個可用的軟體包,每月下載量近100億次。

對於正在學習web前端但不知道學習路線,不知道學習方法,不知道該如何找到工作的朋友,我還是要推薦下我自己建的前端學習群:528576461,首先你要是學前端的,其次不管你是小白還是大牛,小編都挺歡迎,群里每天都會分享前端相關乾貨,包括我自己(一名工作六年的前端老司機)最近熬夜花了一星期整理出的一份適合2017年自學的最新web前端資料,都送給大家,歡迎初學和進階中的小夥伴。

為了幫助大家更好地選擇JavaScript框架、庫和工具,本文將對流行的框架、庫和工具進行一些對比,但是由於篇幅有限,可能並不能包含到所有的框架、庫和工具,所以歡迎大家在下方補充評論,共同學習進步。

為了讓大家的討論在共同的水平線上,首先我們先來確定一下框架、庫和工具的概念。可能每個人對於這三者都有自己的理解,但是本文是基於以下的概念來進行討論的。

庫是有用功能的有組織的集合。庫的典型功能包括處理字符串、日期、HTML DOM元素、事件、Cookie、動畫、網絡請求等。每個函數將值返回給調用應用程式,但是你可以從中選擇參數來應用。如果用汽車來做比喻,那就是你可以任意使用所有的零部件來搭建汽車,但是你必須自行構建引擎。

庫通常是提供一個更高的抽象層,平滑的實現細節和矛盾。例如,Ajax通常依賴於XMLHttpRequest API,但是由於各瀏覽器之間的差異,你可能需要修改幾行代碼來實現。但是庫可以提供一個更簡單的ajax函數,讓程式設計師更專注於高層次的業務邏輯。

👁 Image
...

因為庫不必在意更多的細節,所以開發時間可能會縮短20%,但是它也不是沒有缺點的:

  • 庫內的錯誤可能難以定位和修復

  • 開發團隊不能保證快速發布補丁

  • 修補程序可能會更改API,並對您的代碼進行重大更改。

框架

框架是一個應用程式的骨架,它要求你以特定的方式處理軟體設計,並在某些點插入自己的邏輯。 通常框架提供事件、存儲和數據綁定等功能。 如果我們還是用汽車了來做類比,那麼框架就是一輛車的底盤、車身和發動機,為了讓車輛始終保持運行狀態,你可以添加、刪除或修改某些組件。

框架通常會提供比庫更高的抽象層,並且幫助用戶快速構建項目的08%,但它的缺點是:

  • 如果應用程式超出了框架的範圍,那麼剩下的20%可能會很難完成;

  • 框架更新可能很困難 ;

  • 框架核心代碼和概念很少更新,但是同樣的事情,程式設計師往往都會在短時間內發現一個更好的解決方式;

工具

👁 Image
...

工具有助於開發,但並不是項目的組成部分。 工具包括系統構建,編譯器, transpilers,代碼分割器,圖像壓縮器等。

工具的應用使得開發過程變得更加容易,例如很多程式設計師都喜歡將Sass to CSS,因為它提供了代碼分離,嵌套,渲染時間變量,循環和函數。 瀏覽器不了解Sass / SCSS語法,因此在測試和部署之前,必須使用適當的工具將代碼編譯為CSS。

JavaScript框架和庫

jQuery

👁 Image
...

jQuery是最常用的JavaScript庫,它革命性的在客戶端開發,將CSS選擇器引入到DOM節點檢索加連結來應用事件處理程序、動畫和Ajax調用。jQuery近年來備受青睞,對於一個很需要JavaScript功能的項目來說,jQuery絕對是一個可行的選擇。

優點:

  • 分布規模小;

  • 學習曲線平緩,在線幫助多;

  • 語法簡潔;

  • 容易延伸;

缺點:

  • 增加了本機API的速度開銷

  • 瀏覽器兼容性的改善降低了它的重要性;

  • 用法扁平

  • 有些行業反饋有很多不必要的使用。

React

👁 Image
...

React可能是去年一年最受關注的庫了吧。React聲稱是一個用於構建用戶界面的JavaScript庫,它專注於MVC開發的「View」部分,並且可以輕鬆創建保留狀態的UI組件。 它是實現虛擬DOM的第一個庫, 內存結構計算差異,有效地更新頁面。

從使用情況來看,React的情況似乎有些不好,但這是因為它是在應用程式中使用而不是網站,38%的程式設計師表示他們正在使用該庫。

優點:

  • 小巧,高效,快捷靈活;

  • 簡單的組件模型;

  • 良好的文檔和在線資源;

  • 伺服器端渲染;

  • 處於高速發展期;

缺點:

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

  • 構建工具必不可少;

  • 要求其他庫或框架提供Model和Control;

  • 與修改DOM的代碼和其他庫不兼容;

Lodash and Underscore

👁 Image
...

Lodash和Underscore提供了數百個功能性的JavaScript實用程序來補充本地字符串,數字,數組和其他原始對象方法。 它在客戶端使用率較低,但是可以在伺服器端的Node.js應用程式中使用很頻繁。

優點:

  • 小而簡單;

  • 擁有優質文檔,易於學習;

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

  • 不擴展內置對象;

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

缺點:

  • 有些方法只適用於ES2015及更高版本的JavaScript。

AngularJS 1.x

👁 Image
...

Angular最流行的版本是1.x版本,它使用雙向數據綁定擴展HTML,同時將DOM操作與應用程式邏輯脫鉤。儘管版本2已經發布(當然現在已經到了版本4),但是Angular 1.x仍在開發中。

優點:

  • 眾多大公司採用;

  • 以單一的解決方案來生產現代Web應用程式;

  • 一個解決方案來生產現代Web應用程式;

  • MEAN堆棧(MongoDB,Express.JS,AngularJS,NodeJS),有眾多文檔和教程可用來參考;

缺點:

  • 學習曲線更加陡峭;

  • 大代碼庫

  • 不能升級到Angular 2.x

Angular 2.x (now 4.x)

👁 Image
...

Angular 2.0於2016年9月發布。這是一個完整的重寫,它引入了使用TypeScript(被編譯為JavaScript)創建的基於模塊化組件的模型。 Angular 4.0版本於2017年3月發布。

Angular2+和1.0版本截然不同,與其他也不兼容,所以也許谷歌應該給該項目另外起一個名字。

優點:

  • 單一的解決方案來生產現代Web應用程式;

  • 儘管Angular 2+的可用文檔較少,但它仍是MEAN堆棧的一部分;

  • 對於熟悉靜態類型語言(如C#和Java)的人員,TypeScript提供了一些優勢。

缺點:

  • 更陡峭的學習曲線;

  • 大代碼庫;

  • 不能從Angular 1.x升級;

  • 與1.x相比,Angular 2.x的使用率相對較低;

  • 儘管是Google的項目,但Google似乎並沒有使用它?

Vue.js

👁 Image
...

Vue.js是一個用於構建用戶界面的輕量級漸進框架。 該核心提供了一個React-like 的虛擬 DOM-powered層,它可以與其他庫集成,也可以支持單頁應用程式。

Vue.js使用HTML模板語法將DOM綁定到實例數據。 模型是在更改數據時更新視圖的純JavaScript對象。 附加工具提供了scaffolding,路由,狀態管理,動畫等功能。

優點:

  • 易於上手,普及度高;

  • 起點簡單,但完成滿意度高;

  • 依賴性小,性能好;

缺點:

  • 是一個新項目,所以風險可能會很大;

  • 依賴開發人員來更新;

  • 相對同類框架,資源較少;

Backbone.js

👁 Image
...

Backbone.js是提供常見的伺服器端框架MVC結構最早的客戶端選項之一,它唯一的依賴是由同一開發人員創建的Underscore.js。

Backbone.js聲稱是一個庫,因為它可以與其他項目集成,但我認為大多數程式設計師都認為它是一個框架。

優點:

  • 體積小,重量輕,複雜度低;

  • 不添加HTML的邏輯;

  • 文檔豐富;

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

缺點:

  • 與AngularJS等相比,抽象度較低;

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

  • 新的框架基本已經不再採用MVC架構;

Ember.js

👁 Image
...

Ember.js是基於Model-View-ViewModel(MVVM)模式的框架之一。 它在單個包中實現模板化,數據綁定和庫。如果 Ruby on Rails體驗的用戶,能夠迅速熟悉其配置概念。

優點:

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

  • 程式設計師可以快速開發—其使用jQuery;

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

  • 採用了現代Web開發標準;

缺點:

  • 與其他正在向較小組件結構移動的框架相比,被認為是單一的;

  • 陡峭的學習曲線 ;

Knockout.js

👁 Image
...

較早的MVVM框架之一,Knockout.js使用觀察者來確保UI與底層數據保持同步,它具有模板和依賴關係跟蹤。

優點:

  • 小而輕便,無依賴

  • 支持回溯到IE6

  • 優質文檔;

缺點:

  • 較大的項目可能變得複雜;

  • 發展速度已經放緩;

  • 使用情況正在下降;

值得注意,下面這些項目雖然不如上面的受歡迎,但還是值得一試的:

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

Meteor - 一個用於Web應用程式的全棧平台。

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

Svelte - 一個將框架原始碼轉換為JavaScript的新項目

Conditioner.js - 一個基於狀態自動加載和卸載模塊的庫。

工具:General-Purpose Task Runners

構建工具可以自動執行各種Web開發任務,例如預處理,編譯,優化圖像,縮小代碼,運行測試等等。所有的任務都可以在一個可執行包中管理,比較受歡迎的工具包括:

Gulp.js

👁 Image
...

Gulp雖然不是第一個工具,但是它是最受歡迎的工具,Gulp使用易於閱讀的JavaScript代碼,將源文件加載到流中,並在將數據輸出到構建文件夾之前通過各種插件管理數據。

npm

👁 Image
...

npm是Node.js包管理器,但其腳本工具可用於運行通用任務。 對於具有很少依賴關係的簡單項目來說,這是一個有吸引力的選擇,但是對於複雜的任務來說,它可能就有些有心無力。

Grunt

👁 Image
...

Grunt是第一個實現批量採用的JavaScript任務的工具,但其速度和複雜的JSON配置,使得Gulp異軍突起。如今,這些問題解決了,Grunt仍然是一個不錯的選擇。

工具:Module Bundlers

多個JavaScript文件的管理成為了程式設計師們的煩惱,在默認情況下,瀏覽器文件未被編譯,因此依賴關係必須以適當的順序加載或連接。雖然有各種選項,如ES6模塊和CommonJS,但瀏覽器支持畢竟是有限的,因此Module Bundlers就變得至關重要。

Webpack

👁 Image
...

Webpack支持所有流行的模塊選項,並已成為React開發的代名詞。 雖然它聲稱是一個Module Bundlers,但是也可以用作通用任務運行程序。

Browserify

👁 Image
...

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

RequireJS

👁 Image
...

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

Tools: Linting

「Linting」是分析你的代碼的潛在錯誤或偏離語法標準。 有了這種工具,你永遠不出現只有一半括號或者未聲明變量的情況。

ESLint

👁 Image
...

ESLint是一種可插拔的Linting工具,每個規則都是一個插件,因此可以根據您的喜好進行配置。

JSHint

👁 Image
...

一個靈活的JavaScript linter,在真正的錯誤和迂腐的語法需求之間取得了很好的平衡!

JSLint

👁 Image
...

JSLint是最早的Linter之一,遵循一套嚴格的默認規則。

Tools: Test Suites

在應用程式的編寫過程中有一個很重要的步驟那就是代碼測試。代碼測試的工具有很多,如Ava、Tape和Jest。下面,我們就為大家介紹最受歡迎的三個選擇:

Mocha

👁 Image
...

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

Jasmine

👁 Image
...

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

QUnit

👁 Image
...

QUnit是一個單元測試框架,可以通過特定參數檢查函數結果。

Tools: Miscellaneous

雖然JavaScript比較常見常用,但是也並不是每個程式設計師都喜歡JavaScript,例如TypeScript,LiveScript和CoffeeScrip這些也可以使得程式設計師的開發過程很愉快。

JavaScript-powered HTML的引擎模板有數十種,其中包括Mustache,Handlebars,Pug(Jade)和EJS。但在我而言, 更喜歡保留JavaScript語法(如EJS和doT)的輕量級選項。

如何自己來編寫文檔呢?ES2015兼容的文檔生成器包括ESDoc,JSDoc,YUIdoc,documentation.js和Transcription。

寫在最後

如果你想要走在技術的前端,那麼React以及和其相關的技術發展方向值得關注。如果你想要為Web應用程式選擇一個安全的選項,那麼你可以考慮Vue.js。

雖然整體框架現在不再那麼受歡迎,但是如果你是要做嚴格的大型項目結構,AngularJS會是一個不錯的選擇。雖然,現在大多數人還在使用1.0版本,但是從長遠來看,學習一下TypeScript,選擇4.0版本會更加安全。

jQuery雖然在技術新聞中很少被提到,但是它的學習曲線平緩,幾乎所有的程式設計師都可以理解,而且它現在還在積極開發。

工具的選擇會因項目而異,但是不可否認,大多數項目都會選擇Gulp和WebPack。每個項目和團隊的技能都是不同的,所以你在選擇的時候要在有限時間內準確評估。

最後,永遠不要忘記庫,框架和工具是可選的! JavaScript在過去的十年中發生了革命性的變化,幾乎每隔幾個月都會有熱門框架的出現,所以很容易就掉進陷阱之中。所以,在選擇時,就要考慮自己的實際需求,也要積極學習新的知識。

您可能感興趣
免責聲明:本文內容來源于輝煌科技點,文章觀點不代表壹讀立場,如若侵犯到您的權益,或涉不實謠言,敬請向我們提出檢舉
最新文章 / 服務條款 / 私隱保護 / DMCA / 聯絡我們

壹讀/READ01.COM