開發 Next.js 應用程式只是第一步,後續的部署作業至關重要。這項程序包含將應用程式提供給網際網路中的使用者。有效的部署策略是關鍵所在,可以確保應用程式的效能、擴充性和可靠性。這份指南會逐步說明如何順利部署 Next.js 應用程式。
Next.js 是一種 React 框架,在 React 的基礎上新增多項功能,讓開發人員更輕鬆地建立正式環境網站,並自動進行最佳化調整。
簡單來說,Next.js 可協助您以 React 建構現代化應用程式。這種框架支援伺服器,並提供最佳化調整過的映像檔和元件,可以快速產生結果,而且僅須傳輸小型檔案。
這兩者看起來可能很相似,也都會執行 JavaScript,不過功能和用途大相逕庭。
特徵 | React (預設) | Next.js |
SEO 適合程度 | 可能相當困難 | 適合 SEO |
初始載入效能 | 稍慢 | 較快 |
擷取資料 | 需要手動導入 | 內建 getServerSideProps 和 getStaticProps |
轉送 | 使用轉送程式庫 (例如 React Router) | 透過檔案系統轉送 |
複雜度 | 更簡單 | 已預先定義多項設定 |
React (預設)
Next.js
SEO 適合程度
可能相當困難
適合 SEO
初始載入效能
稍慢
較快
擷取資料
需要手動導入
內建 getServerSideProps 和 getStaticProps
轉送
使用轉送程式庫 (例如 React Router)
透過檔案系統轉送
複雜度
更簡單
已預先定義多項設定
許多 React 應用程式的建立步驟大致相同,但我們建議使用 Next.js 框架。這個架構能管理許多元件,讓您更有效率地擴充應用程式並將 React 網站的 SEO 最佳化,滿足您的高效能和進階需求。
務必使用終端機產生範本,確保所有需要的詳細資料和程式碼都已備妥。
使用終端機:
npx create-next-app@latest
接下來,您還需完成一些設定。
根據指示掌握必要和所需資訊 (伺服器或用戶端資訊),以及其位置。有了這些資訊,才能建構應用程式。
「這是發揮優異效能和速度的關鍵。」
再次確認您已備有伺服器和/或用戶端所需元件的相關資訊。
現在更新程式碼,讓版面配置更美觀。
如需相關資訊,請參閱這份說明文件。
變更完畢後,即可完成設定。您現在可以看到新的程式碼。
網站速度是提高搜尋引擎最佳化效率的關鍵。JavaScript 本身會拖慢顯示速度,進而降低搜尋效能。不過,使用 Next.js 可減輕這個問題。因此,請優先確保網站載入速度快,且資料管理效率高。謹慎使用測試資料,並遵守隱私權和存取權規範,才能提供最佳產品,同時妥善保護安全。
用戶端轉送
大部分 React 應用程式會使用 react-router-dom 等程式庫來處理導覽作業。由於這是在瀏覽器中運作,必須設定託管伺服器才能支援。一般做法是將所有網頁要求導向根層級 index.html 檔案,然後讓 React Router 接管並顯示正確的元件。
環境變數
應用程式在開發和正式環境可能須採用不同的設定,例如 API 金鑰或資料庫端點。請務必使用環境變數 (例如 .env 檔案) 管理這些資訊,以免曝露原始碼中的敏感資訊。
後端 API 通訊
React 前端會構成 UI,但通常從後端 API 取得動態資料。如果 API 託管於不同網域,部署 React 應用程式時,務必確保應用程式知道正式環境 API 的正確網址,並設為可處理跨源資源共享 (CORS)。
為了順利轉移應用程式,首先請確認已導入資料和轉移設定的所有相關詳細資料。
按照這些步驟,確保每個階段都包含專案所需的所有詳細資訊。
# 只在需要時安裝依附元件 FROM node:16-alpine AS deps # 檢查 https://github.com/nodejs/docker-node/tree/b4117f933ba60658f2812f36b8 117330a1dc25ab#alpine RUN apk add --no-cache libc6-compat WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci # 如果使用 turbo,請一併取消註解以下區段: # COPY turbo.json ./ # COPY .gitignore ./ # 新增環境變數 ENV NEXT_TELEMETRY_DISABLED 1 # 重新建構掛鉤來檢查要加入及排除的項目 RUN npm run build ############### #### 第 2 階段:正式環境映像檔 ### ############### FROM node:16-alpine AS runner WORKDIR /app # NEXT_PUBLIC_... env variables during build time. ENV NODE_ENV production # 如果使用自訂設定檔,則只要複製 next.config.js 即可 COPY --from=builder /app/next.config.js ./ COPY --from=builder /app/public ./public COPY --from=builder /app/.next ./.next COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/package.json ./package.json # 詳情請參閱 https://cloud.google.com/run/docs /configuring/traffic ENV PORT 8080 EXPOSE 8080 CMD ["npm", "start"] |
# 只在需要時安裝依附元件
FROM node:16-alpine AS deps
# 檢查 https://github.com/nodejs/docker-node/tree/b4117f933ba60658f2812f36b8
117330a1dc25ab#alpine
RUN apk add --no-cache libc6-compat
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
# 如果使用 turbo,請一併取消註解以下區段:
# COPY turbo.json ./
# COPY .gitignore ./
# 新增環境變數
ENV NEXT_TELEMETRY_DISABLED 1
# 重新建構掛鉤來檢查要加入及排除的項目
RUN npm run build
###############
#### 第 2 階段:正式環境映像檔 ###
###############
FROM node:16-alpine AS runner
WORKDIR /app
# NEXT_PUBLIC_... env variables during build time.
ENV NODE_ENV production
# 如果使用自訂設定檔,則只要複製 next.config.js 即可
COPY --from=builder /app/next.config.js ./
COPY --from=builder /app/public ./public
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./package.json
# 詳情請參閱 https://cloud.google.com/run/docs
/configuring/traffic
ENV PORT 8080
EXPOSE 8080
CMD ["npm", "start"]
接下來要完成部署。請使用 Cloud Build 等平台,並連結設定檔。
最後使用 Cloud Run 發布應用程式,並注意應用程式是否可用且正確。請務必參照主要工具和程式碼,確保運作順暢。
Firebase 也是很合適的選擇,只需要以下簡單步驟就能完成部署。想在 Firebase 整合 Next.js 嗎?請按照完整說明文件操作。
按照映像檔或文件要求來完成設定 (必須使用 SSL),確保所有作業安全無虞。
按照 Firebase CLI 安裝及使用說明操作。
npm install -g firebase-tools
執行「firebase init hosting」指令,按照提示操作。
確認指令列中的網址已重寫,且正確無誤。
回答「否」,確保所有內容部署完成後不會發生問題。
請使用本機主機程式碼,執行本機測試。
驗證 CLI 後,將程式碼推送至以下存放區:
現在完成以下事項:
如需完整的 Cloud Run 一般開發提示清單,請參閱這份說明文件。