1、React 16 和 MIT 許可證
2017年,React 繼續(xù)在前端領域占據(jù)主導地位,備受期待的 React 16 也正式發(fā)布。該版本包含可實現(xiàn)異步 UI 渲染的 fiber 架構(gòu),以及更便捷的錯誤管理。
不過,React 更引人關注的不是其新特性,而是開源許可證的更改。Facebook 放棄了導致很多企業(yè)拒絕使用其開源項目的 BSD+專利許可模式,并采用了對用戶友好的 MIT 許可證。同時,Jest、Flow、Immutable.js 和 GraphQL 等項目也更改為了 MIT 許可證。
react官網(wǎng): https://reactjs.org/

2、下一代 Web 應用模型 — PWA
PWA(Progressive Web App)是 Google 于 2016 年提出的概念,2017 年已被迅速采用。PWA 旨在增強 Web 體驗,可顯著提高加載速度、可離線工作、可被添加至主屏、全屏執(zhí)行、推送通知消息等等。這些特性將使得 Web 應用漸進式接近原生 App。
如何建立一個PWA項目:
https://www.w3cplus.com/pwa/your-first-pwapp.html
https://segmentfault.com/a/1190000008880637

3、Yarn 快速普及,NPM 跟上腳步
Facebook 與 Exponent、 Google 和 Tilde 合作開發(fā)的 Yarn 在2016年10月發(fā)布以后,迅速躥紅。Yarn 可以看做是對 NPM 缺失的一些關鍵特性的補充,能夠更快速地安裝軟件包和管理依賴關系,并且可以在跨機器或者無網(wǎng)絡的安全環(huán)境中保持代碼的一致性。據(jù)悉,Yarn 下載量目前已超過10億次(每月下載量達到125萬次)。
Yarn 的成功,使得 NPM 在 5.0 版本中也加入了上述的這些特性。
官網(wǎng): https://yarnpkg.com/en/
中文網(wǎng): https://yarn.bootcss.com/

4、WebAssembly 受主流瀏覽器支持
WebAssembly (wasm)在今年受到了所有主流瀏覽器的支持,包括 Chrome、Firefox、Safari 和 Edge 。wasm 源于 Mozilla 發(fā)起的 Asm.js 項目,用于補充 JavaScript,其本地解碼速度比 JS 解析快得多,讓高性能的 Web 應用在瀏覽器上運行成為可能,比如視頻游戲、計算機輔助設計、視頻和圖像編輯、科學可視化等等。
而且由于 wasm 字節(jié)碼(Bytecode)較一般程序代碼小許多倍,意謂著這項標準可節(jié)省移動設備的使用帶寬,有助于改善網(wǎng)頁加載速度,且字節(jié)碼更適合瀏覽器讀取。
wasm 還提供了一個JavaScript API,為前端開發(fā)人員提供了一個更容易的切入點。
wasm: http://webassembly.org/

5、Angular 發(fā)布了 v4,以及……v5
由于采用語義化版本控制,Angular 在今年跨越了兩個大版本:于 3月23日 發(fā)布的 Angular 4 以及于 11月1日 發(fā)布的 Angular 5。Angular 4 優(yōu)化了視圖引擎、減少代碼體積;Angular 5 中包含了一些用戶期待已久的改進,像是編譯器的改進,能更快的構(gòu)建/重建;新的 @angular/service-worker 包能夠更好的構(gòu)建漸進式 Web 應用程序。
angular: https://angularjs.org/

6、Vue.js 繼續(xù)流行
既然說到了 React ,說到了 Angular ,自然不能落下 Vue 。2017 年,Vue 依然越來越受歡迎,該框架提供基于組件的架構(gòu),是 React 在因許可證問題被抵制時的主要替代方案之一。它已經(jīng)被包括 GitLab 在內(nèi)的許多大型公司采用,在 Stack Overflow 上的關注度居高不下。

7、CSS-in-JS 在爭議中沉淀
React 的出現(xiàn),打破了以前“關注點分離”的網(wǎng)頁開發(fā)原則,因其采用組件結(jié)構(gòu),組件強制要求把 HTML、CSS、JavaScript 寫在一起。隨著 React 的走紅和組件模式深入人心,這種” 關注點混合” 的新寫法逐漸成為主流。表面上,React 的寫法是 HTML、CSS、JavaScript 混合在一起。實際上并不是,其實是用 JavaScript 在寫 HTML 和 CSS,React 是在 JavaScript 里面實現(xiàn)了對 HTML 和 CSS 的封裝。由于 CSS 的封裝非常弱,導致了一系列的第三方庫,用來加強 React 的 CSS 操作,它們統(tǒng)稱為 CSS in JS,意思就是使用 JS 語言寫 CSS。
CSS in JS 的出現(xiàn)帶來了很多爭議,有不少人認為是在重復造輪子,或者說是沒有找到其優(yōu)勢。CSS-IN-JS 是不是未來的方向我們暫且不議,但其在 2017 年已得到明顯的采用。
CSS IN JS 阮一峰: http://www.ruanyifeng.com/blog/2017/04/css_in_js.html

8、靜態(tài)網(wǎng)站卷土重來
2017 ,靜態(tài)網(wǎng)站卷土重來。Gatsby 等框架使你能夠使用 React 和其他現(xiàn)代工具構(gòu)建靜態(tài)網(wǎng)站。不是每個網(wǎng)站都需要或應該是一個復雜的現(xiàn)代 Web 應用,靜態(tài)網(wǎng)站生成器能夠提供的服務器端渲染和無與倫比的速度,正式其優(yōu)勢所在。
靜態(tài)網(wǎng)站生成器還引發(fā)了另一個被稱為 JAMStack 的趨勢:“JavaScript,APIs,Markup”。 JAMStack 使用相同的靜態(tài)預構(gòu)建 HTML 文件以及可重復使用的 API 和 JavaScript 來處理請求/響應周期內(nèi)的任何動態(tài)編程,旨在提供更好的性能,更高的安全性,更低的擴展成本和更優(yōu)的開發(fā)人員體驗。

9、GraphQL 繼續(xù)挑戰(zhàn) REST
雖然很多人認為 GraphQL 在 2017 年依然沒有火起來,但不可否認的是 GraphQL 已逐漸占據(jù)了一席之地。不再管理多個端點并獲取不必要的數(shù)據(jù),GraphQL 允許客戶端聲明式地定義所需的數(shù)據(jù),并從單個端點檢索所有數(shù)據(jù)。這也正式它在剛出現(xiàn)時被認為是革命性的 API 工具的原因,因為它可以讓客戶端在請求中指定希望得到的數(shù)據(jù),而不像傳統(tǒng)的 REST 那樣只能呆板地在服務端進行預定義。
GraphQL: http://graphql.cn/

10、TypeScript 和 Flow 受追捧
2017 年,TypeScript 受到了很多 JavaScript 開發(fā)者的追捧。TypeScript 由微軟創(chuàng)建,也是新版 Angular 采用的語言,其強類型正式優(yōu)勢所在。 而 Flow 則提供了一種更加靈活的方式來引入類型,而不需要進行重構(gòu)。
TypeScript : http://www.typescriptlang.org/
flow: https://flow.org/
