NextJs (1) 基礎介紹與安裝
基礎介紹
Next.js 是由 Vercel 開發的一個開源的 React 框架,專門用來構建快速、可擴展、且對 SEO 友好的網頁應用。它讓開發者能夠更輕鬆地構建全端的 React 應用,並且提供了許多強大的功能,以下是其主要特點:
伺服器端渲染 (SSR):Next.js 支援伺服器端渲染,這有助於提升 SEO 效果,並且能夠加快首屏渲染速度,對使用者體驗有極大幫助。
靜態生成 (Static Generation):它允許開發者在編譯時生成靜態頁面,使得應用程式加載更快。這在部落格、產品頁面等情境中特別有用。
API 路由:Next.js 支援構建 API,這意味著開發者可以在同一個項目中同時處理前端與後端邏輯,而不需要額外的後端框架。
自動路由:Next.js 基於檔案系統的自動路由,開發者只需在 pages 資料夾中新增檔案,就能自動生成對應的路由。
圖片優化:它內建圖片優化功能,能自動生成適合裝置的圖片格式,進而提升網站性能。
TypeScript 支援:Next.js 原生支援 TypeScript,讓開發者能夠更好地進行類型檢查和錯誤捕捉。
CSS-in-JS 和全域 CSS:Next.js 支援各種 CSS 解決方案,包括 CSS-in-JS、全域 CSS 以及 Sass。
安裝
使用 npx 安裝 nextjs
1 | npx create-next-app@latest |
執行 next app
1 | cd <專案名稱> |
專案結構
頂層資料夾
- .next:編譯後的程式碼、快取、靜態資源、SSR 頁面輸出
- node_modules
- public:靜態資源
- src:原始碼資料夾
頂層設定檔
- next.config.js:Next.js 的設定檔
- package.json:
- .env:環境變數
- .env.local:本機環境變數
- .eslintrc.json:ESLint 的設定檔案
- .gitignore:Git 忽略的 Git 檔案和資料夾
- jsconfig.json:JavaScript 的設定檔
常見專案結構範例
1 | my-next-project/ # Next.js 自定義專案根目錄 |
元件類型介紹
Next.js 裡元件可以分為兩種類型, server component 和 client component
server component
✅ 可以做的事:
- 取得伺服器資料(如環境變數、存取資料庫等)
- 可以包 Client Component(Client Component 不能包 Server Component)
- 在瀏覽器中,可以檢視其 HTML 原始碼
- 取得遠端資料,並且由伺服器渲染(重要)
🚫 不能做的事:
- 不能使用 React Hook(useState, useEffect…)
- 不能使用 onClick 等事件方法
- 不能使用 window 等方式存取用戶瀏覽器資料
client component
可以在元件加入 ‘user client’ 來建立 Client Component
✅ 可以做的事:
- 使用 React hooks、處理使用者事件
- 當使用 console 時,數值會顯示在 Browser Console
- 環境變數必須搭配 NEXT_PUBLIC_
- 使用 瀏覽器 API
- 再次更新畫面(AJAX)
🚫 不能做的事:
- 不能存取伺服器資源(例如 fs)
- 不能包 Server Component