1. 程式人生 > >2017年 JavaScript 框架回顧 -- 後端框架

2017年 JavaScript 框架回顧 -- 後端框架

本文是2017年 JavaScript 框架回顧系列的最後的一篇文章,主要介紹 JavaScript 的後端框架情況。

139239-20180130090857062-802256402

從上圖中可以看到,Express 作為用 JavaScript 編寫的後端服務的主流解決方案,佔據了後端框架使用率的絕大部分,其次的四個最大框架對比於 Express 來說,佔用率都很小。

139239-20180130090915968-190292404

到目前為止,我們所討論的幾乎所有框架的絕對使用量都在不斷增加。自2013年以來,Express 的使用率已經增長了6000%。之所以 Express 的6000%增長在第一張圖中顯示成下降的狀態,是因為在同一時間內,總的 npm registry 增長了67,000%。也就是說,JavaScript 社群正在以程式語言史上前所未有的速度增長。

npm 的前端使用正在爆炸式增長

目前,大約83%的 npm 開發人員正在編寫執行在前端的 JavaScript,而只有41%的人正在為後端編寫程式碼(前後端開發者有重疊的部分)。前後端開發人員的比例為約為2:1,這也表明 npm 社群的未來在於前端的開發和工具製造。

接下來我們檢視其它的後端框架。

其他後端框架

下面是除 Express 之外的四個最大的後端框架,分別為:

  • Koa
  • Hapi
  • Sails
  • Next

koa

139239-20180130091051812-795725909

藍色代表的是 koa 的相對使用率情況。Koa 是 Express 的開發人員使用一套更緊密的設計原則編寫的,旨在建立一個更小、更富表現力同時也更健壯的 Web 框架。雖然 Koa 具有不低的使用量,但其增長速度還不是很快。

Hapi

139239-20180130091135765-1023011000

Hapi 是一個用於構建應用和服務的豐富框架,Hapi 使得開發者更專注於編寫可複用的應用邏輯,而不必把時間花費在基礎設施的搭建上。2014年底,Hapi 有一個短暫的繁榮時期,然而自此之後,Hapi 的使用率就一直處於下滑狀態。

Sails

139239-20180130091247593-762880060

Sails 是 JavaScript 的 Ruby on Rails 克隆。儘管最初在2012年年底推出時,Sails 非常受歡迎,但它卻也遵循著“半衰期”的衰退模式,這也表明 Sails 不再被新專案採用。

Next.js

139239-20180130091323875-252959306

Next.js 是一個基於 React 的通用 JavaScript 框架,同時也是一個較新的框架。

Zeit 的開發團隊在 React 的基礎上建立了 Next.js。Next.js 提供了一種很方便的方式來建立新的 Web 應用。當前 Next.js 的使用率儘管還很低,但是卻一直保持著上升的趨勢,值得關注。

Npm 中的前後端對比

139239-20180130091617546-465634651

前面已經提到,當前前端開發者的數量遠超後端開發者的數量,但這種情況是否反映在 npm 的前後端安裝包數量上呢?

儘管前後端的安裝包也存在重疊的情況,但是整體數量還是後端安裝包數量高於前端。

npm 中的前端使用情況

139239-20180130091653781-2092675145

2013年以前,npm 中的前端框架使用量非常大,Backbone 的流行也是促成這種情況的原因之一。但是,隨著 Express 和其它伺服器端框架的持續增長,Backbone 變得不那麼流行了。

npm registry 的前端使用率在經過兩年的下滑之後,2015年開始再次開始增長。

跟蹤 npm 前端的具體使用情況

為了弄清楚 npm 前端的具體使用情況,我們將關注於提供前端程式碼的一些庫,主要包括:

  • Bable
  • Webpack
  • Browserify
  • Bower
  • RequireJS
  • SystemJS

Bable

139239-20180130091750875-1771886963

Babel 是一個轉譯器,用於將現代的 JavaScript 版本轉換為與 Node.js 中的伺服器端 JavaScript 以及瀏覽器相容的 JavaScript 舊版本。Babel 非常受歡迎,被用於前端和後端應用程式中。

Webpack

139239-20180130092333500-237031113

Webpack 是專門為瀏覽器提供 JavaScript 程式碼的工具。React 一直使用 Webpack 為瀏覽器服務做準備,很長一段時間,React 和 Webpack 都保持著相同的增長趨勢。

但是從2016年年中開始,Webpack 的使用率開始超過 React。這也表明,Web 開發人員已經開始更廣泛的採用 Webpack,而不僅僅是 React 應用程式。

Browserify

139239-20180130092319390-1078733961

在 WebPack 成為流行的 JavaScript 程式碼工具之前,Browserify 一直是瀏覽器端轉化伺服器端 JavaScript 的重要工具。Browserify 也曾在2015年中期保持很高的受歡迎程度,但是從2016年開始,隨著 Webpack 的逐漸流行,Browserify 的受歡迎度出現了急劇下滑的現象。

這也許和兩個工具的設計目的有關。Browserify 為瀏覽器帶來了 Node.js API surface(包括用於許多後端的API),Webpack 則是一個更通用的模組系統和編譯工具,用於載入圖片、CSS和其它前端資源。因此,對於非 Node.js 開發者來說,Webpack 更為有用。隨著 npm Registry 前端使用的急劇增加,Webpack 已經成為一個非常有吸引力的選擇。

Bower

瀏覽器端模組化 JavaScript 的另一個解決方案是 Bower,Bower 將模組引入了瀏覽器。儘管 Bower 客戶端是由 npm Registry 託管和安裝的,但是 Bower 卻是一個完全獨立的非 npm 模組。

雖然 Bower 的開發人員認為其客戶端具有許多優秀的特性,但是他們還是贊同 CommonJS(大多數 npm 包所使用的 JavaScript 模組的格式)是一種更為靈活和流行的解決方案。Bower 的受歡迎程度自2014年起開始出現了持續的下滑。

RequireJS 和 SystemJS

139239-20180130092230875-63767441

Bower 的模組並不是 CommonJS 的唯一選擇,RequireJS 是另一種具有模組格式的可選方案。RequireJS 在2013年初很受歡迎,但自2014年之後,開始與 Bower 一同出現下滑。2015年釋出的 SystemJS 增長很緩慢。

Webpack 和 Express

139239-20180130092213968-1643435504

目前,我們判斷 npm 前端使用量的最可靠依據就是 Webpack。相比於 Express 的相對使用率,可以看到,Webpack 在三年時間內,相對使用率迅速攀升到了 Express 的一半。

我們大膽預測 Webpack 將繼續增長,甚至可能會超過 Express,這也與我們所見到的 Webpack 的新使用者比例一致。幾年後,npm 將是一個主要的前端工具。

總結

139239-20180130092439312-1769777919

npm 生態系統中前端和後端的使用量增長,對於 JavaScript 的整體而言都是一個好訊息。JavaScript 語言所具有的靈活性和易用性,是一種很大的優勢。

也許 JavaScript 的廣泛採用,正是由於 JavaScript 的內建特性很少,使得 JavaScript 語言在被使用時,有了很多的其它選擇。

現在 JavaScript 使用量正在急劇增長,npm 也在與之同步增長。

相關推薦

2017 JavaScript 框架回顧 -- 框架

本文是2017年 JavaScript 框架回顧系列的最後的一篇文章,主要介紹 JavaScript 的後端框架情況。 從上圖中可以看到,Express 作為用 JavaScript 編寫的後端服務的主流解決方案,佔據了後端框架使用率的絕大部分,其次的四個最大框架對比於 Express 來說,佔用率都很小

什麼是框架(包括前端框架框架

什麼是框架 框架(Framework)是整個或部分系統的可重用設計,表現為一組抽象構件及構件例項間互動的方法;另一種定義認為,框架是可被應用開發者定製的應用骨架。前者是從應用方面而後者是從目的方面給出的定義。 可以說,一個框架是一個可複用的設計構件,

2017 JavaScript 框架回顧 -- 前端框架

開發 width family reg 成長 爆炸 維護 資源 normal 概述:對於 JavaScript 社區來說,npm 的主要功能之一就是幫助開發者發掘所需的 npm Registry 中的庫和框架。npm 強大的搜索功能能夠幫助找到一組相關的軟件包,同時其內置的

2017 JavaScript 框架回顧 -- React生態系統

images 本質 分享圖片 擴展 auto 軟件 使用率 關系 表格控件 前一篇文章中,我們介紹了2017年 JavaScript 框架的整體情況。我們也了解到在眾多的前端框架中,目前最為龐大又在快速增長的當屬 React 了,本文就來重點介紹 React 的生態系統。首

2017最受歡迎的UI框架

ui框架  前端領域最近幾年發展的特別迅速,可以說是百家爭鳴。在底層的前端框架領域中,最早是jquery稱霸互聯網,近兩年MVVM類型的框架慢慢成為主流,Vue、React和Angular三大框架並駕齊驅。可以說,目前這四種是開發者用的最多使用最廣的底層框架,也由此衍生了大量基於這些框架的免費UI庫。 這些年

-框架-Spring-MyBatis-自動裝配

後端-框架-Spring-MyBatis-自動裝配 bean標籤下autowire屬性 autowire value no 手動裝配 byName

-框架-Spring-bean的作用域-未完成

後端-框架-Spring-bean的作用域 scope Value singleton 單例模式 prototype 每次建立新例項

-框架-Spring-dataSource配置

後端-框架-Spring-dataSource配置 dbcp配置方式1(只適用於單個專案) 在database.properties中 #properties不需要對特殊符號轉義 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:my

-框架-Spring-MyBatis-事物增強

後端-框架-Spring-MyBatis-事物增強 xml配置方式 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"

-框架-Spring-MyBatis-注入對映器

後端-框架-Spring-MyBatis-注入對映器 其中的配置檔案 <!-- 資料來源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <p

-框架-Spring-MyBatis

後端-框架-Spring-MyBatis-整合 基礎類(基礎) public class UserMapperImpl implements UserMapper { private SqlSessionTemplate sqlSession; public SqlSes

-框架-Spring-IoC-多種型別注入

後端-框架-Spring-IoC-多種型別注入 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="h

-框架-Spring-IoC-p:命名

後端-框架-Spring-IoC-p:命名 其他類 public class User{ private Integer id; // 使用者ID private String username; // 使用者名稱 // getter & setter public

-框架-Spring-IoC-contructor-arg-構造注入

後端-框架-Spring-IoC-contructor-arg public class UserServiceImpl implements UserService { // 宣告介面型別的引用,和具體實現類解耦合 private UserDao dao; private St

-框架-Spring-AOP-Declaring Advice

後端-框架-Spring-AOP-Declaring Advice Declaring Advice Value aop:before aop:after

Slog67_框架Skynet之Makefile解讀

ArthurSlog SLog-67 Year·1 Guangzhou·China Sep 11th 2018 同道者相愛 同藝者相嫉 同與者相愛 同取者相嫉 同病者相愛 同壯者相嫉 開發環境MacOS(High Sierra 10.13.5) 需要的資訊

Flask框架前端互動之傳遞Json資料

方案一:後端使用   jsonify()方法  返回Json資料    後端程式碼: # encoding:utf-8 from flask import Flask, render_tem

-框架-Spring-IoC-註解注入

=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/

框架的學習流程

有不少初學者問到,我想學習後端,但是又不知道該怎麼學,所以我決定把這幾年的經驗和經歷整理成一篇文章,分析後端的路該怎麼走,先說明下面僅僅是個人心得,也許與外面的理論有所不同。(文章最後面會附上學習路線地圖和一些自己看過的書籍) 後端初接觸 後端首先需要學習的是

框架之Flask--藍圖和測試單元

BlueprintBlueprint概念:簡單來說,Blueprint 是一個儲存操作方法的容器,這些操作在這個Blueprint 被註冊到一個應用之後就可以被呼叫,Flask 可以通過Blueprint來組織URL以及處理請求。Flask使用Blueprint讓應用實現模組