TYPO3 Headless vs Next.js + Supabase:真實遷移數據
你的 CTO 在上午 9:47 轉發了 Slack 訊息:「我們能用 TYPO3 實現 Headless 嗎,還是要用 Next.js 重建?」你自 2018 年以來就在維護同一個 TYPO3 一體化系統——TypoScript 範本、Fluid 片段,以及一個擁有 40 多個自訂模組的擴充資料夾。現在有人讀了一篇關於解耦架構的部落格文章,你的路線圖剛好消失了。在過去兩年裡,我將六個企業級 TYPO3 網站遷移到 Headless 堆棧——三個透過 EXT:headless 保留了 TYPO3,三個遷移到了 Next.js + Supabase。這個決策取決於三個變數,而大多數代理商都忽略了,第一個與效能完全無關。
對我來說這不是學術性的。我已經用兩種方法啟動了生產網站,經歷了那些令人討厭的邊界情況,並看到團隊用每個堆棧要麼成功,要麼失敗——有時非常壯觀。讓我們談談我沿途學到的東西。
理解兩種方法
首先,我們到底在比較什麼?這兩個是完全不同的東西。
TYPO3 + EXT:headless(解耦)
透過這種方式,TYPO3 保留為你的 CMS,處理所有內容管理後端任務。轉變是,你用 JSON API 替換了舊式 Fluid/TypoScript 渲染。你閃閃發光的新前端?可以是 React、Vue 或任何你喜歡的,消耗那個 API。TYPO3 持續管理所有好東西,如模型、權限和工作流程。
EXT:headless 擴充?那是獲得 TYPO3 渲染過程的 VIP 後台通行證,並輸出 JSON 而不是 HTML。它不是某個附加 API——它是直接與 TYPO3 內容核心合作的真實交易。
Next.js + Supabase(完全 Headless)
另一方面,你有 Next.js 管理前端和伺服器端邏輯。Supabase(PostgreSQL、驗證、檔案儲存和即時功能的瘋狂組合)整理你的後端。這裡根本沒有 TYPO3,各位。你正在拋棄舊 CMS,尋求純粹的靈活性和現代 JS 原生設定。
EXT:headless 實際如何運作
當你在 TYPO3 上貼上 ext:headless 時,它註冊了一個改變一切的新頁面類型。不再透過 Fluid 範本傳遞內容;相反,它提供 JSON。
以下是你會得到的內容:
{
"id": 42,
"type": "textmedia",
"content": {
"header": "Welcome to our site",
"headerLayout": 2,
"bodytext": "<p>Some rich text content here</p>",
"media": [
{
"publicUrl": "/fileadmin/images/hero.webp",
"properties": {
"width": 1920,
"height": 1080,
"alt": "Hero image"
}
}
]
},
"appearance": {
"layout": "default",
"frameClass": "default",
"spaceAfter": "medium"
}
}
前端然後將這些點連接到 React/Vue 元件。如果你曾經接觸過任何基於元件的 CMS,這會感覺像你最喜歡的舊毛衣。
設定 EXT:headless
典型的設定開始於:
composer require friendsoftypo3/headless
在你的 TypoScript 中:
plugin.tx_headless {
settings {
debug = 0
}
}
page = PAGE
page {
typeNum = 0
10 = USER
10.userFunc = FriendsOfTYPO3\Headless\ContentObject\JsonContentObject->render
}
這是有趣的部分:對於 TYPO3 中的每個自訂內容元素,你需要 JSON 序列化器。對於一個網站,比方說,有一把自訂元素?你在看幾天的工作。一個具有大量元素的龐大企業設定?做好準備——這可能需要幾週。
TYPO3 Headless 做得很好
- 編輯器體驗保持不變。 TYPO3 的熟悉後端意味著內容編輯者無需重新培訓。
- 保留現有內容。 你的設定不會消失。你所有的內容、翻譯和媒體?它們會保留。
- 多語言支援搖滾樂。 TYPO3 有我見過的一些最好的語言處理。
- 企業級功能。 從工作區到排定發佈,一切都準備好了。
EXT:headless 的陷阱
- TYPO3 不會消失。 你需要懂 PHP 的 TYPO3 專業人士,他們並不到處都是。
- 複雜的託管。 你在處理 PHP(TYPO3)和 Node.js(你的前端)。雙倍的樂趣,雙倍的複雜性。
- 有限的 API 介面。 它是 JSON,不是 GraphQL。自訂意味著深入回到 TYPO3 擴充開發。
- 預覽困擾。 整合 TYPO3 和 Next.js 的即時預覽?不適合膽小的人。

Next.js + Supabase:完全 Headless 堆棧
版面配置
透過這個設定,Next.js 處理你的應用層,Supabase 負責所有資料庫和後端任務。
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Next.js │────▶│ Supabase │────▶│ PostgreSQL │
│ (App Router)│ │ (BaaS) │ │ (Database) │
└─────────────┘ └──────────────┘ └─────────────┘
沒有 TYPO3 的內容管理
這是事情變得棘手的地方。編輯如何管理內容?
- 自訂管理面板。 工作量比你想象的要多。
- Supabase Studio。 非常適合開發者,編輯可能會恨它。
- 新增 CMS。 現在管理三個服務。
- 使用 Payload 和它自己的資料庫。 在我看來相當優雅。
這樣你就能看到,這是一個基本的使用 Supabase 的內容提取實現:
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.SUPABASE_SERVICE_ROLE_KEY!
)
export async function getPage(slug: string) {
const { data, error } = await supabase
.from('pages')
.select(`
id,
title,
slug,
meta_description,
content_blocks (
id,
type,
content,
sort_order
)
`)
.eq('slug', slug)
.eq('status', 'published')
.single()
if (error) throw error
return data
}
Next.js + Supabase 閃閃發光的地方
- 極高的效能。 靜態生成、ISR、邊緣渲染——你的速度遊樂場。
- 開發人員眾多。 JavaScript/TypeScript 人員到處都是。
- Supabase 的行級安全。 當你想要緊密控制時真的很酷。
- 即時功能。 像微風一樣整合實時更新。
- 輕鬆部署。 使用 Vercel 來 Next.js 和 Supabase Cloud 來後端或自託管。
這裡的鬥爭
- DIY CMS。 除非你在頂部放另一個 Headless CMS,否則你基本上是在建立自己的。
- 編輯黑洞。 沒有內建工作流程。草稿狀態、排定發佈?你必須自己實現。
- 語言管理。 多語言內容支援?你會在建立內部時流汗。
- 媒體管理困擾。 Supabase 儲存並非為數位資產量身訂製。記住這一點。
對比分析
看看他們如何堆積:
| 功能 | TYPO3 + EXT:headless | Next.js + Supabase | |------|---------------------|--------------------|| | 編輯 UX | 優秀 | 自訂或新增 CMS | | 多語言 | 原生 | DIY 實現 | | 工作流程 | 內建 | 需要自訂建構 | | 效能 | 良好 | 優秀 | | API | 有限 | 完全控制 | | 即時 | 缺少 | 支援 | | 驗證 | 傳統 | 現代和靈活 | | 複雜性 | 高 | 中 | | 人才庫 | 稀缺 | 豐富 | | 內容遷移 | 不必要 | 完整遷移 | | 功能 | 內置 | 建構或購買 | | 設定時間 | 2-4 週 | 4-8 週 | | 成本(託管) | €150-500 | €45-200 |
效能基準
讓我們從我測試過的網站看到一些數字——公司網站、200 頁、多語言支援:
| 指標 | TYPO3 Headless + Next.js | Next.js + Supabase (SSG) | |------|--------------------------|-------------------------|| | TTFB(未快取) | 280ms | 45ms | | TTFB(CDN 快取) | 35ms | 32ms | | LCP | 1.8s | 1.2s | | CLS | 0.02 | 0.01 | | Lighthouse 分數 | 92 | 98 | | 建構時間(完整) | 4m 20s | 1m 45s | | API 回應(p95) | 180ms | 22ms |
最重要的是?雖然 Supabase 的未快取 TTFB 更好,但 CDN 快取基本上持平。設定正確時,兩者對最終使用者來說都足夠快。

開發者體驗和團隊考慮
深入 TYPO3
對於 Headless 專案,你仍然需要 TYPO3 專業人士。想想 PHP 序列化器、測試升級和處理相容性問題。在 2026 年,這些專家可能會花費 €80-120/小時。有些開發者對 Headless 設定不滿意——它去掉了 Fluid 範本化的樂趣。
Next.js + Supabase 俱樂部
JavaScript 開發者很豐富,但記住設計內容管理系統對每個人來說都不容易。Supabase 的開發體驗相當光滑:自動生成的 TypeScript 類型、即時訂閱和穩健的驗證助手。但所有資料建模和架構決策?這些都取決於你。
考慮這條路?我們的團隊在 Next.js 開發方面磨練了專業知識,幫助你迴避令人討厭的驚喜。
遷移策略
從傳統 TYPO3 到 TYPO3 Headless
低風險,內容保持不變。主要是前端重寫。
- 推出 EXT:headless
- 將內容元素對映到 JSON
- 打造 Next.js/Nuxt 前端
- 排序預覽整合
- 上線!
時間框架:對於適度規模的企業網站為 8-16 週。
從 TYPO3 到 Next.js + Supabase
抓住你的座位,這是一次完整的重建。
- 審核目前內容設定
- 草繪你的 PostgreSQL 架構
- 編寫遷移指令碼
- 移動媒體和檔案參考
- 建構編輯工具或整合另一個 CMS
- 再次建構前端
- 處理 URL 重定向
- 傳播多語言內容
時間框架:16-32 週。複雜的 Headless 開發?帶進專業人士使生活更輕鬆。
成本分析
讓我們計算中等規模企業設定的費用:200 頁、3 種語言、5 個編輯、50K 月訪問量。
TYPO3 Headless — 第一年成本
| 項目 | 成本 |
|---|---|
| TYPO3 託管(託管) | €3,600/年 |
| Next.js 託管(Vercel Pro) | €240/年 |
| 前端開發 | €25,000-45,000 |
| EXT:headless 整合 | €8,000-15,000 |
| 第一年總計 | €36,840-63,840 |
| 持續年度 | €5,000-8,000 |
Next.js + Supabase — 第一年成本
| 項目 | 成本 |
|---|---|
| Supabase Pro | €300/年 |
| Vercel Pro | €240/年 |
| 新增 CMS(如需要) | €0-3,600/年 |
| 內容遷移 | €10,000-20,000 |
| 前端 + 後端開發 | €40,000-70,000 |
| 編輯工具 | €10,000-25,000 |
| 第一年總計 | €60,540-119,140 |
| 持續年度 | €2,000-6,000 |
完全 Headless 前期成本龐大,但由於你拋棄了 TYPO3 託管,月度費用會下降。只是不要低估在頂部額外的 CMS 建構。
何時選擇哪個
TYPO3 + EXT:headless
- 堅持傳統內容和既定工作流程。
- 保留熟悉的編輯設定和豐富功能。
- 受益於複雜的原生多語言支援。
- 保留 TYPO3 開發者。
Next.js + Supabase
- 從頭開始時。
- 應用程式需要充足的互動功能。
- 你的開發團隊已經是 JavaScript 焦點。
- 保持高效能是關鍵焦點。
- 習慣新增 Headless CMS。
考慮第三個角度
也許混合它也穿過你的腦海?Next.js、Headless CMS 加上 Supabase 用於應用資料可以結合最好的。它提供成熟的編輯工具,沒有 TYPO3 包袱。如果你也在考慮針對輕量級內容豐富網站的 Astro 開發選項,那也值得一看。
想談談你的具體需求?我們在這裡幫助評估什麼對你的獨特情況有意義——聯絡我們,我們承諾誠實評估,即使是「堅持你所知道的」。
常見問題
TYPO3 EXT:headless 在 2026 年可以在生產中使用嗎? 是的,完全沒有問題。EXT:headless 自版本 3.x 以來一直很穩定,並得到積極支援。版本 4.x 涵蓋 TYPO3 v12 和 v13,具有穩健的內容序列化、功能表生成和表格處理。許多大型企業網站在生產設定中執行它,包括德國和奧地利的政府和銀行等部門。
我能為 TYPO3 Headless 前端使用 Next.js 嗎? 當然可以,這是一個經典的組合。你將利用 Next.js App Router 與伺服器元件從 TYPO3 的 JSON API 收集資訊。預覽整合是最棘手的部分:設定草稿模式並引導 TYPO3 透過預覽 URL 呼叫它。幸運的是,社區的有用文件會指導你完成 Next.js 配對。
Supabase 與 TYPO3 的資料庫設定相比如何? 哦,這些是蘋果和橙子。TYPO3 在 Doctrine DBAL 上執行,具有由 TCA 管理的更嚴格的架構。Supabase 提供了那種甜蜜的 PostgreSQL 自由度,具有行級安全。Supabase 提供靈活而強大的查詢能力,但 TYPO3 經過精心結構化,以防止編輯可能無意中引入的錯誤。這都是關於控制與安全。
使用 Headless TYPO3 的 SEO 問題?處理中繼標籤和結構化資料?
EXT:headless 確實序列化頁面屬性,如中繼標籤和開放圖形資料。你的前端需要將它們呈現為 HTML 標籤。使用 Next.js 的 Metadata API 在佈局中。只要你的 TYPO3 設定牢固,SEO 資料應該會跟著。整合擴充如 EXT:yoast_seo,它將與 Headless 配置進行良好配合。
Supabase 是否達到企業級內容交付水準? 當然可以。Supabase Cloud 在 AWS 上執行,在專業計劃上提供 99.9% 的正常運行時間,並提升到團隊計劃上的 99.95%(檢查 2026 年費率)。用於 CDN 快取(Vercel 的邊緣網路、Cloudflare),Supabase 主要確保寫入和即時功能可靠性。對於關鍵企業使用,自託管 Supabase 以獲得最大控制。
我們如何不用 TYPO3 處理影像處理? TYPO3 原生處理影像——裁剪、調整大小、格式翻轉。沒有它,建立你的影像工作流程。2026 年頂級競爭者是:Next.js 影像最佳化(內建、Vercel 支援)、Cloudinary(免費開始,嚴肅用途需要付費計劃)或 imgix(起價 €100+/月)。Supabase 儲存處理原件,但不轉換。
我們能從 TYPO3 Headless 遞增遷移到完全 Headless 嗎? 絕對可以,想想這是一個順利的計劃。從 Headless TYPO3 開始,隔離前端。漸漸地將內容從 TYPO3 轉移到 Supabase 或你選擇的 CMS——從更簡單的類型開始。在此期間,你的 Next.js 前端使用來自兩個來源的資料。
TYPO3 團隊轉向 Next.js + Supabase 的學習曲線是什麼? 一個現實的加速是大約三到六個月。也就是說,挑戰不是 JavaScript 或 TypeScript——這是範例轉變。TYPO3 開發者習慣於框架引導內容結構、快取和路由。在 Next.js + Supabase 模型中,那些呼叫都是你的。這既令人欣喜又起初令人困惑。與經驗豐富的 Next.js 專業人士配對程式設計使這個飛躍更平順。