- 爲了涵蓋現代應用程序開發的方方面面,JavaScript、CSS、HTML和WebAssembly標準的發展速度正在加快。
- TypeScript的受歡迎程度得到大幅提升,現在已經出現在GitHub排名前10位最受歡迎的編程語言中。InfoQ今年報道了很多框架和庫,它們在這一年當中都取得了引人注目的進展。
- WebVR/WebXR和機器學習推動了更好的3D渲染和數據可視化。
- React的採用率大大增加,但包括Vue.js在內的新一波框架浪潮正在迎頭趕上。
- 應用程序的各種選項,從漸進式Web應用程序到Electron、Ionic和Cordova的混合,再到React Native和NativeScript等原生編譯器,都爲使用Web技術構建有競爭力的應用程序提供了更高的靈活性。
InfoQ每年都會更新主題圖表,以體現技術趨勢的變化。我們的編輯團隊從各種渠道獲得技術的實踐狀態、新出現的想法,當然也會把QCon現場的參與情況考慮在內。
對於位於圖表右邊的技術,你或許可以在InfoQ網站上找到很多與之相關的內容,因爲在這些技術剛出現的時候,我們對它們進行了報道。當個人、團隊和組織想要採用這些技術時,由創新者和早期採用者提供的指南對他們就有所裨益。
位於圖表左邊的是剛出現的技術,通常是創新者和早期採用者在使用這些技術,我們致力於報道這些內容,把這些新想法帶給我們的讀者,這樣他們就知道是否該學習這些新技術或者關注它們的發展情況。
這個月我們關注的是JavaScript和Web開發,這個快速變化的領域每年都會出現一次以上的更新。下面這張圖表是2018年第一季度也就是我們上一次研究得出的趨勢圖。
下面這張是2018年第四季度的修訂版。
對於我們來說,Web開發是一個很有趣的領域,幾乎每天都會出現新的JavaScript框架。決定要關注哪些框架以及忽略掉哪些框架是一件非常具有挑戰性的事情。開發人員可以學習這些有趣的框架,並從中獲得靈感,即使他們當前可能沒有在日常開發工作中使用它們。
創新者
從過去幾個月的趨勢來看,隨着瀏覽器供應商不滿足於最小可行功能並努力提高性能和填補空白,人們對WebAssembly的興趣在不斷增長。
CSS Houdini引發了CSS領域的一系列騷動,一些CSS新工具(如PostCSS)正在挑戰現有的CSS預處理器,如SASS、LESS和Stylus。CSS Houdini仍然是我們感興趣的領域。
Deno是Node.js的原始作者的一個新項目,使用TypeScript開發,試圖解決Node.js面臨的一些問題。這是一個非常早期的項目,但卻展現了非常關鍵的前景。
Dojo是一個可以追溯到2004年的原始JavaScript工具包,在今年發佈了版本2(隨後是版本3和版本4)。它使用TypeScript進行了重大改寫,轉變成爲反應式的、向標準看齊的、基於虛擬DOM的現代框架。新版本Dojo表現出了顯著的性能提升和開發者人體工程學改進,但還處在採用週期的早期階段。
TensorFlow.js是基於JavaScript的機器學習基礎庫。我們不僅跟蹤這個庫,同時也跟蹤利用這個庫來推動JavaScript機器學習的其他項目。
早期採用者
在早期採用者方面,我們繼續跟蹤Flow(JavaScript的靜態類型檢查器)和Elm(用於開發基於JavaScript的Web應用程序的另一個JavaScript替代語言)。
從上一次發佈報告以來,由於行業發生了巨大變化,這一次我們將其中一些技術歸到這一類別:
- GraphQL仍然是我們要關注的趨勢,已經有幾個可用庫,包括Apollo、Vulcan.js和urql。
- ECMAScript 2018現已定版,2019版相關的工作正在順利進行當中。
- WebVR及其未來的替代品WebXR提供了基於HTML、CSS和JavaScript的虛擬、增強和混合現實功能。當標準從VR擴展到XR時,出現了重大的用戶流失,但在瀏覽器和JavaScript方面,卻存在潛在的興趣。A-Frame和React 360等庫通過利用Three.js得到了一定的普及。
我們還添加了其他一些早期採用者:
與Elm一樣,Reason是JavaScript的另一種替代方案,也提供了類型安全和簡化的到JavaScript的轉換。
W3C的Web平臺孵化器社區小組(WICG)一直致力於實現各種有用的標準,包括Intersection Observer和Resize Observer等已確定的標準,以及實驗性技術,如畫中畫和WebUSB。
Web組件在過去幾年中不斷髮展,現在Chrome和Firefox提供原生的支持,Safari部分支持。很多框架和庫本身也支持Web組件,如Angular、Dojo、Ionic、Stencil、Svelte和Vue.js。
CSS Next包含了一系列CSS改進,其中有很多可以與PostCSS或CSS Houdini一起使用。
Ionic 4目前處於測試階段,它經歷了一次重大變革,將自己與Angular等特定框架解耦,並專注於與現代Web標準看齊。
NativeScript爲Angular和Vue.js用戶提供了原生編譯選項,用於部署使用Web技術開發的移動應用程序。
Nest.js是一個很有前途的服務器端框架,使用TypeScript開發,並運行在Node.js之上。
早期大衆
在早期大衆類別中,Vue.js繼續發展,並獲得更多的支持。我們認爲它確實已經跨越了鴻溝,進入到“早期大衆”狀態。我們發現Vue.js在中國特別受歡迎,而且新版InfoQ網站也使用了該框架(目前處於測試階段)。Vue.js 3正在積極開發當中,並使用TypeScript進行重寫。
Angular最近發佈了版本7,並繼續改進。
通常,構建和捆綁工具對於優化生產應用程序來說非常有用。幾乎每個框架都會利用某些工具組合來優化性能。
我們已經將Electron和TypeScript推到了早期大衆狀態。Electron是一個被廣泛採用的桌面應用程序外殼,它結合了Node.js和Chromium,爲使用Web技術開發的應用程序提供基礎設施。
TypeScript是採用最爲廣泛的JavaScript變體,在過去幾年中取得了實質性進展,現在大多數JavaScript框架都在利用它提供的工具和基礎設施。根據最近發佈的GitHub Octoverse報告,TypeScript本身就是十大編程語言之一,而JavaScript狀態報告將TypeScript列爲迄今爲止使用最廣泛的JavaScript變體。
我們直接將三個項目添加到早期大衆類別中:
React Native是一個使用JavaScript和React構建原生移動應用程序的框架,它迅速成爲一種流行的構建跨平臺移動應用程序的方式。
同樣,在討論如何最有效地構建JavaScript應用程序時,函數式和反應式編程模式是人們避不開的話題。一些庫(如lodash)讓這些模式變得更爲流行。
晚期大衆
隨着JavaScript生態系統的不斷成熟,現在晚期大衆類別中的一些基礎技術並沒有被替換的跡象,幾乎每個JavaScript開發者都在使用它們。
我們多個項目移到了晚期大衆狀態。
一般來說,IDE和編輯器會得到廣泛使用。在桌面方面,VS Code似乎有領先Atom、Sublime Text、WebStorm甚至vim或emacs的潛力。基於瀏覽器的IDE(如CodeSandbox)將大部分VS Code體驗帶入Web瀏覽器,以便快速開發、實驗和分享開發工作。
Babel最近發佈了版本7,爲開發人員提供了轉換各種JavaScript版本的默認轉換器。
React已經成爲自jQuery以來採用最爲廣泛的框架,並且還在不斷髮展,現在幾乎每天都會有支持React的新項目發佈。
Node.js是一種採用十分廣泛的JavaScript服務器端和命令行環境,NPM是最常用的Node.js包管理器。幾乎每個JavaScript項目都將Node.js作爲命令行和構建工具,而Node.js也已經在服務器端開發和嵌入式系統中得到了廣泛採用。
Express也在我們的列表中,是一個採用最爲廣泛的基於Node.js的服務器端框架。Webpack也在我們的列表中,它是一個事實上的構建和捆綁工具,也是基於Node.js。
我們將HTML5和ES6/2015添加到晚期大衆類別中,因爲現在幾乎每個Web應用程序都將使用這些功能作爲最低基準。
落後者
我們把落後者放在報告的最後,雖然它們仍然被用在很多應用程序中,但在開發新項目時並不怎麼會考慮使用它們。較新版本的ES6和HTML5分別取代了ES5和HTML4。使用Dojo 1.x和Angular 1.x的應用程序仍然有很多,但已經進入了維護模式。jQuery雖然帶來了一些改進,但已經幾乎被新的HTML和JavaScript功能或更成熟的框架所取代。
結論
JavaScript生態系統正在蓬勃發展,雖然要跟上它的發展步伐具有一定挑戰性,但我們相信這個領域的很多基礎部分已經趨於穩定,從而帶來了更多的創新機會。InfoQ的團隊將爲讀者帶來JavaScript生態系統的專家級報道,我們歡迎讀者提供反饋、評論和外部文章。
關於作者
Dylan Schiemann是SitePen的首席執行官,也是Dojo的聯合創始人,並活躍在JavaScript、TypeScript和開源社區中。在他的領導下,SitePen爲專注於構建高性能和可維護Web應用程序的企業組織帶來了權威的解決方案。Dylan目前的計劃包括指導Intern、TypeScript和Dojo的開發。在與jQuery基金會合並組建JS基金會之前,Dylan是Dojo基金會的聯合創始人。他還是Phoenix TypeScript技術會議小組、倫敦HalfStack技術會議和TSConf的共同組織者。在工作之餘,Dylan喜歡旅行,並在世界各地的技術大會上分享他的經驗。