在前段時間折騰過搭建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的伺服器端渲染,雖然個人造輪子也重要,但是實際開發使用一個開源的,受歡迎的框架來提高開發效率,降低風險更明智。