新的通用JavaScript框架Next.js目前已經開源了,它為基於React和伺服器的網路應用程式提供了一個新的選用方案。
來自Zeit的團隊在React的基礎和元件模型上建構了Next.js,同時也提供了一個關鍵擴充:透過使用名為getInitialProps()的元件生命週期鉤子方法,框架能夠在伺服器上進行初始渲染,如果需要的話,還可以在客戶端繼續渲染。不過這個高級特性是一個很小卻功能強大的框架所額外提供的。
按照Next.js的最小功能集,它提供了一種便利的方式來創建新的Web應用,這個過程中,並不需要很多的工具集配置。類似create-react-app,安裝這個框架會建立一個基於React、Webpack和Babel的建置流程。以往編寫React元件的開發人員將會基於React語法來建立頁面,每個頁面提供了一個render函數:
import React from 'react'export default () => Hello world!
Next.js使用filesystem作為API,所以每個放到pages資料夾中的元件將會自動對應為一個基於伺服器的路由。例如,磁碟上的pages/about.js元件將會自動服務/about這個URL。
與express-react-views這樣的專案不同,它是建立在Express之上的視圖引擎,而next.js是一個頂層的服務層,只渲染JavaScript函數的結果。為了實現這一點,該專案使用glamor來處理CSS,而不是依賴單獨的CSS檔案。
Next.js這種本質上的傾向性會有一些微妙的優勢,其中之一就是開發人員不必在搭建Webpack或Babel配置上花費時間了。以往,這兩個步驟就會耗費開發人員很多的時間。要執行某個網站的開發版本,只需執行npm run dev。
對於一些開發團隊來說,通用(Universal)的JavaScript依然是一項更為高級的技術,很多的框架都有自己的實作。 Angular 2有Universal Angular 2, Ember有Fastboot。在React領域中,這方面的可選方案也不少,例如Walmart的Electrode和Redfin的React Server。現在,Next.js作為一個很簡單的可選方案,具有很大的潛力。該專案在GitHub上已經開源。