這系列內容主要內容是在講如何用 Next.js 取代 WordPress 前端,因此約 70% 內容會著重在開發 Next.js 前端上,因此今天我們先來介紹一下什麼是 Next.js。
React.js 很棒,他可以讓我們以宣告式、元件化的方式開發網站,讓我們能用拼樂高的方式逐步架構出具有複雜狀態的網站。但因為它的成品是 Client-side Rendering 的(CSR、在瀏覽器端渲染),會連帶製造一些問題,主要是這兩點:
要解決這個問題,後續有新的各類 Server-side rendering、Static site generation 等解法被提出來,而
Next.js 就是其中 Server-side rendering 解法中最成熟的,而這也是 Next.js 最初的賣點。
Next.js 是大約五年前由 Vercel 這家公司開發的開源 React.js 框架,要簡單理解它的話可以理解為高級版的 React.js,所有 React 生態系的套件都一樣能使用、開發元件和邏輯時 code 寫法也跟在開發 React 網頁時一模一樣,但 Next.js 幫我們處理了非常多開發 React 網頁會遇到的問題。
Next.js 最主要的提升是在「網站使用者體驗」和「開發者體驗」上。
針對「網站使用者體驗」,Next.js 一開始就提供了 Server-side rendering 的寫法,解決了前面提到的 React 會有的兩大問題,因而提升了使用者體驗和 SEO。
而在近期的改版後,Next.js 提供了更多種渲染策略如 Static Site Generation 和 Incremental Static Generation,這些寫法各有效能和使用情境上的優缺點,我們能在一個網站的不同頁面選用不同策略。關於不同渲染方式的介紹,如 CSR、SSR、SSG、ISR,下一篇文章會詳細介紹。
Next.js 也提供了內建的許多提升效能的解法:
在開發者體驗上,Next.js 一樣提供了類似 create-react-app 一樣的啟動專案指令,叫做 create-next-app用法差不多,能讓你快速建立起 Next.js 專案,後續的文章會說明如何使用。
維護 Next.js 的 Vercel 也是非常專業的開發團隊,官網的官方文件非常好讀,有哪個細節不懂的通常在官網上就能查到解答。在 Next.js Github repo 裡,也提供了非常豐富近百個範例,demo 了非常多種 Next.js 的使用情境,像是如果你要串接各類服務在你的專案裡例如 Google Analytics 要怎麼寫、要串接各種 state management library 例如 redux、xstate 要怎麼寫,等等,可以找到非常多優質的範例程式碼。
同時,Vercel 官方也提供了同名 Vercel 網站託管服務,讓你輕鬆免費部署 Next.js 網站,非常方便!
總結來說,Next.js 是一套非常值得掌握的技術,雖然比起 React.js 確實引入了更多複雜度,需要多考量如何讓同份程式碼在 server-side 和 client-side 都能執行,但上手之後,Next.js 能讓我們做出更優良的網站。
下一篇文章,讓我們實際來建立一個 Next.js 專案吧!