這對我而言不僅僅是學術性的。我已經用兩種方法啟動了生產網站,經歷了那些令人討厭的邊界案例,並看到團隊要麼因為每種堆棧而成功,要麼有時還會壯觀地失敗。讓我們談談我一路上學到的東西。

理解兩種方法

首先,我們在比較什麼?這兩者完全是不同的東西。

TYPO3 + EXT:headless(解耦)

使用這種方法,TYPO3 仍然是你的 CMS,處理所有內容管理後端任務。與眾不同的是,你用 JSON API 替換了舊式的 Fluid/TypoScript 渲染。你閃亮的新前端?它可以是 React、Vue,或任何你想要的,消費那個 API。TYPO3 繼續管理所有的好東西,比如模型、權限和工作流。

EXT:headless 擴展?那是進入 TYPO3 渲染過程並輸出 JSON 而不是 HTML 的 VIP 後台通行證。它不是某個附加 API——它是真正的交易,直接與 TYPO3 的內容核心一起工作。

Next.js + Supabase(完全無頭)

另一方面,你有 Next.js 管理你的前端和服務器端邏輯。Supabase(PostgreSQL、身份驗證、文件存儲和實時功能的奇妙組合)處理你的後端。這裡完全沒有 TYPO3,夥計們。你正在用純粹的靈活性和現代 JS 原生設置拋棄舊 CMS。

EXT:headless 實際上是如何工作的

當你把 ext:headless 套到 TYPO3 上時,它註冊了一個改變一切的新頁面類型。不再通過 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 無頭模式表現良好的地方

  • 編輯體驗保持不變。 TYPO3 熟悉的後端意味著內容編輯無需重新培訓。
  • 保留現有內容。 你的設置不會消失。所有你的內容、翻譯和媒體?它們都留下來。
  • 多語言支持非常好。 TYPO3 擁有我所見過的最好的語言處理。
  • 企業級功能。 從工作區到計劃發布的一切都已準備就緒。

EXT:headless 的問題

  • TYPO3 不會消失。 你仍然需要了解 TYPO3 的 PHP 人才,而他們不是隨處可得。
  • 複雜的主機託管。 你在處理 PHP(TYPO3)和 Node.js(你的前端)。雙倍的樂趣,雙倍的複雜性。
  • 有限的 API 接口。 它是 JSON,不是 GraphQL。自定義意味著潛入 TYPO3 擴展開發。
  • 預覽麻煩。 整合 TYPO3 和 Next.js 的實時預覽?這不是為膽小的人設計的。

TYPO3 無頭模式與 Next.js + Supabase:真實對比

Next.js + Supabase:完全無頭堆棧

架構

使用這個設置,Next.js 負責你的應用層,Supabase 衝過去處理所有數據庫和後端任務。

┌─────────────┐     ┌──────────────┐     ┌─────────────┐
│   Next.js   │────▶│   Supabase   │────▶│ PostgreSQL  │
│  (App Router)│     │   (BaaS)     │     │  (Database)  │
└─────────────┘     └──────────────┘     └─────────────┘

沒有 TYPO3 的內容管理

這是事情變得棘手的地方。編輯如何管理內容?

  1. 自定義管理面板。 比你想象的要多得多的工作。
  2. Supabase Studio。 對開發者很好,編輯可能會討厭它。
  3. 添加一個 CMS。 現在管理三項服務。
  4. 使用自己的數據庫的 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 的行級安全。 當你想要緊密控制時真的很酷。
  • 實時功能。 集成即時更新像輕鬆一樣。
  • 簡單部署。 為 Next.js 使用 Vercel,為後端使用 Supabase Cloud 或自託管。

這裡的困難

  • DIY CMS。 除非你把另一個無頭 CMS 扔進去,否則你基本上是自己製造的。
  • 編輯黑洞。 沒有內置的工作流。草稿狀態、計劃發布?你得自己實現。
  • 語言管理。 多語言內容支持?你將花力氣自己構建它。
  • 媒體管理困擾。 Supabase 存儲不是為數字資產量身定制的。記住這一點。

頭對頭對比

看看他們如何堆疊:

功能 TYPO3 + EXT:headless Next.js + Supabase
編輯 UX 優秀 自定義或添加的 CMS
多語言 原生 DIY 實現
工作流 內置 需要自定義構建
性能 良好 優秀
API 有限 完全控制
實時 缺少 支持
身份驗證 遺留 現代和靈活
複雜性 中等
人才庫 稀缺 豐富
內容遷移 不必要 完全遷移
功能 內置 構建或購買
設置時間 2-4 週 4-8 週
成本(主機託管) €150-500 €45-200

性能基準

讓我們看看我測試過的一個網站的一些數字——企業網站、200 頁、多語言支持:

指標 TYPO3 無頭 + 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

底線?雖然未緩存 TTFB 在 Supabase 中更好,但 CDN 緩存基本上使遊樂場平整。兩者在設置正確時都足夠快,適合終端用戶。

TYPO3 無頭模式與 Next.js + Supabase:真實對比 - 架構

開發者體驗和團隊考慮

深入了解 TYPO3

你仍然需要 TYPO3 專業人士來進行無頭項目。考慮 PHP 序列化程序、測試升級和處理兼容性問題。在 2025 年,這些專家可能要花你 €80-120/小時。一些開發者對無頭設置沒有感到興奮——它奪去了 Fluid 模板的樂趣。

Next.js + Supabase 俱樂部

JavaScript 開發者很多,但請記住為每個人設計內容管理系統並不容易。Supabase 的開發體驗相當光滑:自動生成的 TypeScript 類型、實時訂閱和堅實的身份驗證幫助程序。但所有數據建模和架構決策?那些都由你負責。

在考慮這條路線?我們的團隊在 Next.js 開發 中磨練了專業知識,以幫助你避免令人討厭的驚喜。

遷移策略

從傳統 TYPO3 到 TYPO3 無頭

風險較低,內容保持完整。主要是前端重寫。

  1. 推出 EXT:headless
  2. 將內容元素映射到 JSON
  3. 製作 Next.js/Nuxt 前端
  4. 排序預覽集成
  5. 上線!

時間表:對於一個相當規模的企業網站為 8-16 週。

從 TYPO3 到 Next.js + Supabase

抓緊,這是一次完全重建。

  1. 審計當前內容設置
  2. 草擬你的 PostgreSQL 架構
  3. 編寫遷移腳本
  4. 移動媒體和文件參考
  5. 構建編輯工具或集成另一個 CMS
  6. 再次為前端構建
  7. 處理 URL 重定向
  8. 傳播多語言內容

時間表:16-32 週。複雜的無頭開發?帶來專業人士使生活更輕鬆。

成本分析

讓我們為一個中等企業設置計算:200 頁、3 種語言、5 個編輯、月訪問量 50K。

TYPO3 無頭——第 1 年成本

項目 成本
TYPO3 主機託管(託管) €3,600/年
Next.js 主機託管(Vercel Pro) €240/年
前端開發 €25,000-45,000
EXT:headless 集成 €8,000-15,000
第 1 年總計 €36,840-63,840
持續年度 €5,000-8,000

Next.js + Supabase——第 1 年成本

項目 成本
Supabase Pro €300/年
Vercel Pro €240/年
添加 CMS(如果需要) €0-3,600/年
內容遷移 €10,000-20,000
前端 + 後端開發 €40,000-70,000
編輯工具 €10,000-25,000
第 1 年總計 €60,540-119,140
持續年度 €2,000-6,000

完全無頭成本預先很大,但由於你放棄 TYPO3 主機託管,可以降低月度費用。只是不要低估在頂部構建額外 CMS 的費用。

何時選擇哪一個

TYPO3 + EXT:headless

  • 堅持遺留內容和既定工作流。
  • 保留熟悉的編輯設置和豐富的功能。
  • 從複雜的原生多語言支持中受益。
  • 保留 TYPO3 開發者。

Next.js + Supabase

  • 從頭開始時。
  • 應用程序需要大量交互功能。
  • 你的開發團隊已經以 JavaScript 為中心。
  • 保持性能一流是一個關鍵焦點。
  • 可以舒適地添加一個無頭 CMS。

考慮第三個角度

也許混合它做交叉了你的想法?Next.js、一個無頭 CMS 加上 Supabase 應用數據可以結合最好的。它提供全面的編輯工具而沒有 TYPO3 的負擔。如果你也在考慮 Astro 開發 之類的輕量級內容豐富網站選項,那值得一看。

想談談你的具體需求?我們在這裡幫助評估什麼對你的獨特情況有意義——聯絡我們,我們保證誠實評估,即使是「堅持你所知道的」。

常見問題

2025 年 TYPO3 EXT:headless 生產就緒嗎? 是的,絕對。EXT:headless 自版本 3.x 以來一直很穩定,並得到積極支持。版本 4.x 涵蓋 TYPO3 v12 和 v13,具有堅實的內容序列化、菜單生成和表單處理。大量的大型企業網站在生產設置中運行它,包括德國和奧地利的政府和銀行部門。

我可以為 TYPO3 無頭前端使用 Next.js 嗎? 當然可以,這是經典組合。你將利用 Next.js App Router 與服務器組件從 TYPO3 的 JSON API 中收集信息。預覽集成是最棘手的部分:設置草稿模式並指導 TYPO3 通過預覽 URL 調用它。幸運的是,社區有幫助文檔指導你通過 Next.js 配對。

Supabase 與 TYPO3 的數據庫設置相比如何? 哦,這些是蘋果和橙子。TYPO3 在 Doctrine DBAL 上運行,使用 TCA 管理的更嚴格的架構。Supabase 提供那甜蜜的 PostgreSQL 自由與行級安全。Supabase 提供靈活和強大的查詢能力,但 TYPO3 經過仔細結構化以防止編輯可能意外引入的錯誤。這一切都是控制與安全的事情。

無頭 TYPO3 的 SEO 顧慮?處理元標籤和結構化數據? EXT:headless 確實序列化了頁面屬性,如元標籤和 Open Graph 數據。你的前端需要將它們渲染為 HTML 標籤。在佈局中使用 Next.js 的元數據 API。只要你的 TYPO3 設置可靠,SEO 數據應該跟隨套件。集成像 EXT:yoast_seo 這樣的擴展,它將與無頭配置很好地配合。

Supabase 能達到企業級內容交付嗎? 當然可以。Supabase Cloud 在 AWS 上運行,在 Pro 計劃中提供 99.9% 正常運行時間,並在 Team 計劃上增加到 99.95%(檢查 2025 年費率)。對於 CDN 緩存(Vercel 邊緣網絡、Cloudflare),Supabase 主要確保寫入和實時功能可靠性。對於關鍵企業使用,自託管 Supabase 以獲得最大控制。

沒有 TYPO3 我們如何應對圖像處理? TYPO3 本地處理圖像——裁剪、調整大小、格式翻轉。沒有它,設置你的圖像工作流。2025 年的頂級競爭者是:Next.js 圖像優化(內置、Vercel 支持)、Cloudinary(免費啟動、認真使用需要付費計劃)或 imgix(起價 €100+/月)。Supabase 存儲處理原件但不轉換。

我們可以從 TYPO3 無頭到完全無頭漸進遷移嗎? 絕對,想到它像一個光滑的計劃。從無頭 TYPO3 開始,隔離你的前端。緩慢將內容從 TYPO3 過渡到 Supabase 或你選擇的 CMS——從簡單的類型開始。在階段期間,你的 Next.js 前端從兩個源操作數據。

對於從 TYPO3 過渡到 Next.js + Supabase 的 TYPO3 團隊,學習曲線像什麼? 現實的加速時間大約是三到六個月。也就是說,挑戰不是 JavaScript 或 TypeScript——這是範式轉變。TYPO3 開發者習慣於框架引導內容結構、緩存和路線。在 Next.js + Supabase 模型中,這些調用由你決定。這很解放,但起初不知所措。與經驗豐富的 Next.js 人才進行結對編程使這個飛躍更平順。