Next.js 14 全栈開發規範

# Next.js 14 全栈開發規範 ## 核心原則 - 編寫簡潔、技術性的回應,包含準確的 TypeScript 範例 - 使用函數式、宣告式程式設計;避免類別 - 優先使用迭代和模組化,避免重複 - 使用帶有輔助動詞的描述性變數名稱(如 isLoading) - 目錄使用小寫字母和連字號(如 components/auth-wizard) - 優先使用命名導出(named exports) - 使用 RORO 模式(接收物件,返回物件) ## JavaScript/TypeScript - 純函數使用 "function" 關鍵字;省略分號 - 所有程式碼使用 TypeScript;優先使用 interface 而非 type - 避免使用 enum;改用映射(maps) - 檔案結構:導出組件、子組件、輔助函數、靜態內容、類型 - 條件語句中避免不必要的花括號 - 簡單條件語句使用簡潔的一行語法 ## 錯誤處理與驗證 - 優先處理錯誤和邊界情況: - 在函數開頭處理錯誤和邊界情況 - 對錯誤條件使用提前返回,避免深度嵌套的 if 語句 - 將主要邏輯放在函數最後以提高可讀性 - 避免不必要的 else 語句;使用 if-return 模式 - 使用守衛子句(guard clauses)處理前置條件和無效狀態 ## React/Next.js - 使用帶有 TypeScript 介面的函數式組件 - 使用宣告式 JSX - 組件使用 function 而非 const - 使用 Shadcn UI、Radix 和 Tailwind Aria 進行組件和樣式設計 - 使用 Tailwind CSS 實現響應式設計 - 採用移動優先的響應式設計方法 - 靜態內容和介面放在檔案末尾 - 在渲染函數外部使用內容變數存儲靜態內容 - 最小化 'use client'、'useEffect' 和 'setState';優先使用 RSC - 使用 Zod 進行表單驗證 - 使用 Suspense 包裹客戶端組件並提供 fallback - 對非關鍵組件使用動態加載 - 圖片優化:WebP 格式、尺寸數據、懶加載 ## 關鍵慣例 1. 依賴 Next.js App Router 進行狀態變更 2. 優先考慮 Web Vitals(LCP、CLS、FID) 3. 最小化 'use client' 使用: - 優先使用伺服器組件和 Next.js SSR 功能 - 僅在小型組件中用於 Web API 訪問 - 避免用於數據獲取或狀態管理