React伺服器端渲染框架next.js專案實戰及部署上下文context問題解決辦法

張雪飛發表於2019-05-31

在前段時間折騰過搭建react伺服器端專案架構,點選這裡瞭解下,正好最近有個重構PC網站的需求,考慮SEO等因素。在做技術選型的時候決定採用nextjs。專案開發過程中,nextjs的體驗非常棒,個人覺得比create-react-app開發體驗還要好,特別是HMR功能,雖然都有這個功能,但是nextjs做的更好一些。CRA裡面修改了程式碼,格式化了文件,會導致整個頁面重新整理,這對於SPA專案的開發體驗就很不好了。我在使用nextjs的開發過程中,如果不是自己主動去重新整理瀏覽器,幾乎就沒有重新整理過整個頁面,所有的修改都是在不重新整理頁面的前提下就反映到了頁面上,這個體驗真的很棒。

入門體驗

nextjs的文件個人覺得寫的不算特別詳細,好在github的examples目錄下有很多示例可以參考,比如我沒有使用now來做部署,而是使用了express。很容易就找到參考的示例。開發過程編譯,打包等速度都很快,開發體驗一直非常愉悅。

 

專案中的幾個設定

1. 裡面用的三個依賴的左右:

① nextjs配置多個外掛時使用next-compose-plugins很容易解決,要不然,寫起會有點麻煩

② 把圖片當成模組一樣引入需要使用next-images

③ 樣式支援less需要next-less

 

2. BuildId我這裡就直接固定一個,如果以後開發新版改成v2(或其也行)

3. 打包目錄distDir修改為build(預設為.next)

部署時遇到的問題

1. 設定context來訪問的問題

部署時,我需要配置一個context,因為一個域名下有多個專案。本地開放時都是根路徑,沒啥問題,但是現在需要設定一個context(訪問格式:域名/context)。修改入口檔案app.js(或者server.js,專案通過node app.js來啟動),在得到如下結果之前,我還是折騰了1天多,最終通過檢視一些原始碼,多方除錯才成功。

 

修改下next.config.js

 

2. windows下開發部署到linux上的路徑中的’\\’問題

兩個辦法一個是手動替換pages-manifest.json檔案裡面所有路徑下的’\\’,替換為’/’

另外一個辦法:(推薦)

在linux上面去打包,這樣一勞永逸,最省事。所以開發環境還是mac好啊

小結

推薦使用nextjs來做基於React的伺服器端渲染,雖然個人造輪子也重要,但是實際開發使用一個開源的,受歡迎的框架來提高開發效率,降低風險更明智。

作者:張雪飛
出處:https://zhangxuefei.site/p/2195
版權說明:歡迎轉載,但必須註明出處,並在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。

相關文章