Next.js Refine 教學文件
Next.js + Refine Core 入門教學 (給新手)
這份教學將帶你快速了解如何使用 Next.js (React 框架) 結合 Refine (強大的無頭後端開發框架) 來打造企業級應用。
🚀 為什麼選擇這組合?
- Next.js: 業界領先的 React 框架,提供絕佳的效能與開發體驗。
- Refine: 專注於開發企業級後台與 CRUD 應用的無頭框架 (Headless Framework),它負責處理繁雜的資料請求、狀態管理與導航邏輯,讓你只需專注於 UI 與業務邏輯。
🛠️ 環境與設定流程
使用 Refine 的官方產生器可以快速完成初始化,無需手動設定繁雜的套件。
# 執行產生器並按照互動式介面選擇
npm create refine-app@latest
關鍵選擇建議:
- Framework: 選擇
Next.js。 - UI Framework: 建議新手選擇
None(若想直接使用現成 UI,則可選擇Ant Design或MUI)。 - Router: 選擇
App Router。
🧩 核心概念速覽
Refine 的優勢在於將複雜的後台開發模組化,你只需要理解以下核心概念:
1. Resource (資源)
這是你應用程式中的業務物件 (如:文章、用戶、產品)。Refine 會根據資源名稱,自動為你建立對應的列表、新增、編輯與詳細頁面路由。
2. Data Provider (資料提供者)
這是 Refine 與後端 API 的溝通層。你只需將 API 位址提供給 Data Provider,後續的 GET, POST, PUT, DELETE 等操作將由 Refine 自動處理。
3. Hooks (功能鉤子) - 實作範例
Refine 提供了一組強大的 Hooks 來存取資料。以下是一個簡單的列表頁範例,展示如何使用 useTable 直接從 API 獲取資料並渲染:
"use client";
import { useTable } from "@refinedev/core";
export default function PostList() {
// useTable 自動處理資料抓取、分頁與篩選
const { tableQueryResult } = useTable({
resource: "posts",
});
const { data, isLoading } = tableQueryResult;
if (isLoading) return <div>載入中...</div>;
return (
<ul>
{data?.data.map((post) => (
<li key={post.id}>{post.title}</li>
))}
</ul>
);
}
💡 新手學習路徑建議
如果你是初學者,建議按照以下順序體驗 Refine 的開發模式:
- 先熟悉 Data Provider: 理解如何串接現有的 API (如 JSONPlaceholder),你會發現原本需要寫幾十行的
fetch邏輯,現在一行 Hook 即可解決。 - 理解 App Router 整合: 查看如何使用
app/layout.tsx配置<Refine />供應器,這是所有功能的入口。 - 體驗 Headless 的靈活: 由於 Refine 是 Headless 的,你可以自由搭配任何你喜歡的 CSS 框架 (如 Tailwind CSS) 或 UI 元件庫。
- 深入 authProvider: 學習如何定義登入與權限檢查邏輯,這是企業應用最重要的部分。
🔗 官方資源與建議
Refine 的官方文件非常友善,新手可以多利用:
- Refine 官方文件 (英文): 說明非常詳盡,且包含各種整合範例。
- Refine 範例庫: 裡面有各種真實世界常見的應用場景代碼。
- Refine Discord 社群: 遇到問題時,這是詢問專家的最佳管道。
延伸閱讀
- 客戶端渲染 vs 伺服器端渲染 — 了解
"use client"如何切換渲染模式。 - Next.js + Refine 部分更新完整指南 — 學會
useTable之後,進一步了解如何用 Mutation 做局部更新。