我自從 Evolution 時代以來就一直在 MODX 上構建網站。我編寫過自訂片段,與 TV(模板變數,不是電視機)搏鬥,並在無數 CMS 辯論中為 MODX 辯護。所以當我說這不是攻擊文章時,請相信我。這是來自曾經真正熱愛這個平台的人的警告。

但問題是:網頁開發世界已經向前發展,而 MODX 並未跟上。社群正在萎縮,發佈週期已經放緩到極其緩慢,人才庫正在消耗得比七月的水窪還快。如果你仍在 2026 年的 MODX 上運行生產網站,你需要認真考慮你的退出策略。對於大多數團隊來說,這個退出通向 Next.js。

讓我告訴你為什麼——誠實地,沒有炒作。

目錄

為什麼 MODX 用戶應該在 2026 年遷移到 Next.js:誠實的看法

2026 年 MODX 的現狀

讓我們誠實地看看這些數字。MODX 3.x 已經推出一段時間了,但採用情況一直......冷淡。曾經熱絡的 MODX 論壇現在每週可能只有少數幾篇文章。官方 GitHub 儲存庫顯示提交活動日益稀少。將其與 2018 或 2019 年相比,當時社群仍在努力推進。

來自 2026 年初的 BuiltWith 數據估計 MODX 為大約 0.3% 的 CMS 檢測網站提供支援,而 2021 年約為 0.7%。WordPress 仍以約 62% 的份額佔據主導地位,而使用 Next.js 的較新玩家(通常與無頭 CMS 配對)正以大約 40% 的年度增長率增長。

MODX 市集(前身為 Extras 儲存庫)數月來沒有看到任何有意義的新擴充功能。許多受歡迎的擴充功能要麼無人維護,要麼與 MODX 3.x 只有部分兼容。當生態系統停止產生時,這不是紅旗——這是白旗。

我不是說 MODX 已死。它仍然有效。你的網站仍在運行。但「仍然有效」在網頁開發中是一個危險的位置。

MODX 做對的地方(仍然做對)

在我堆砌更多之前,該歸功於歸功於。MODX 在許多大多數 CMS 仍然做錯的事情上做對了:

真正的內容靈活性

MODX 從未強迫你進入「貼文和頁面」範式。模板變數、塊和片段在「結構化內容」成為流行語多年之前,為你提供了真正的內容建模自由度。你可以構建任何東西。

乾淨的輸出

MODX 沒有注入自己的標記。沒有神秘的 CSS 類,沒有你沒有要求的包裝 div。你的 HTML 就是你的 HTML。對於關心手工藝的前端開發人員來說,這是一個啟示。

開發人員友善的主題設計

沒有要學習的主題系統,沒有要記憶的模板層級。你編寫模板。就是這樣。塊是可重用的部分。片段是 PHP 邏輯。簡單的心智模型,強大的結果。

標籤語法

說你想說的關於 [[*pagetitle]][[!MySnippet]] 的任何事情——一旦你學會了它,你就可以快速構建複雜的頁面。使用 ! 未快取標誌的快取層很優雅。

這些優勢實際上使 MODX 開發人員成為現代無頭架構的優秀候選人。如果你已經在結構化內容和基於元件的模板中思考,你已經在通往 Next.js 的一半路上了。

你再也不能忽視的問題

這是我必須坦白的地方。

安全問題

MODX 3.x 解決了許多歷史上的漏洞,但運行任何具有公開管理面板的 PHP 單體應用都是固有的風險向量。在 2025 年,我們看到至少兩個影響 MODX 安裝的關鍵 CVE,修補程式需要數週才能到達。隨著安全團隊的萎縮,回應時間並未改善。

相比之下,部署在 Vercel 或 Netlify 上的 Next.js 網站——根本沒有伺服器可以攻擊。沒有管理面板可以暴力破解。沒有 PHP 可以利用。攻擊面從根本上更小。

人才危機

試著在 2026 年僱用一名 MODX 開發人員。去吧。發佈職位列表,然後聽著蟋蟀的叫聲。開發人員池已經遷移到 React、Next.js 和現代 JavaScript 框架。即使 PHP 人才也在去 Laravel,而不是 MODX。

這不是理論上的問題。我與代理商交過話,他們有 MODX 網站,字面上找不到開發人員來維護。當原始開發人員離開時,網站就成了負債。

PHP 8.x 兼容性麻煩

MODX 3.x 在 PHP 8 上運行,但許多擴充功能則否。如果你構建的網站依賴於第三方片段或外掛程式,升級 PHP 通常會破壞東西。你最終被固定在較舊的 PHP 版本上,這又回到了安全問題。

沒有現代開發人員體驗

沒有熱模組重新加載。沒有基於元件的架構。沒有 TypeScript 支援。沒有內建圖片優化。沒有邊緣渲染。沒有 ISR。我可以繼續下去。

MODX 的開發工作流本質上是:在管理員中編輯文件或塊(或通過同步工具在你的 IDE 中),清除快取,刷新瀏覽器。它有效,但與現代 DX 相比速度很慢。

性能上限

MODX 可以很快——我在它上面構建過次於 2 秒的網站。但達到那裡需要重大優化:完整頁面快取、CDN 設定、資料庫調優和仔細的片段架構。Next.js 基本上開箱即用地提供亞秒級性能和靜態產生。你在 MODX 上為性能而戰;在 Next.js 上,你在為搞砸它而戰。

為什麼 MODX 用戶應該在 2026 年遷移到 Next.js:誠實的看法 - 架構

為什麼 Next.js 是自然的遷移目標

你可能會問:為什麼不是 WordPress?為什麼不是 Astro?為什麼不只是靜態網站產生器?

所有有效的選項,但 Next.js 對大多數 MODX 遷移都是一個很好的折衷。原因如下:

渲染靈活性反映 MODX 思維

MODX 開發人員已經理解不同的頁面需要不同的快取策略。在 MODX 中,你會將片段標記為快取或未快取。在 Next.js 中,你為每頁選擇靜態網站產生 (SSG)、增量靜態重新產生 (ISR) 和伺服器端渲染 (SSR)。相同的概念,更好的執行。

元件架構替代塊

MODX 塊是可重用的 HTML 部分。React 元件是具有內建邏輯的可重用 UI 部分。如果你一直在編寫像 [[!$header]][[!$footer]] 這樣的塊,你已經在元件中思考。你只是沒有 props。

API 路由替代片段

MODX 片段處理伺服器端邏輯——表單處理、API 呼叫、自訂查詢。Next.js API 路由(或 Next.js 14+ 中的伺服器動作)執行相同操作,但使用更好的工具和測試支援的 JavaScript/TypeScript。

對於考慮替代方案的團隊,Astro 值得為不需要太多互動的內容豐富網站進行評估。但如果你需要動態功能、經過身份驗證的體驗或複雜的資料擷取,Next.js 是更強的選擇。

遷移路徑:MODX 到 Next.js

讓我們變得實際。以下是 MODX 到 Next.js 遷移的實際運作方式。

步驟 1:審計你的內容模型

對應每個 MODX 模板、模板變數和資源類型。這在你選擇的任何無頭 CMS 中都成為你的內容模型。記錄一切:

## 資源:部落格貼文
- pagetitle → title(文字)
- longtitle → seo_title(文字)
- content → body(富文字)
- TV: hero_image → hero_image(媒體)
- TV: author → author(參考)
- TV: category → category(分類法)

步驟 2:匯出你的內容

MODX 沒有很好的匯出工具。你可能需要編寫一個自訂片段或腳本來查詢 modx_site_content 和你的 TV 表,然後輸出 JSON:

<?php
// 快速和骯髒的 MODX 內容匯出
$resources = $modx->getCollection('modResource', [
    'published' => 1,
    'deleted' => 0
]);

$output = [];
foreach ($resources as $resource) {
    $output[] = [
        'id' => $resource->get('id'),
        'title' => $resource->get('pagetitle'),
        'slug' => $resource->get('alias'),
        'content' => $resource->get('content'),
        'template' => $resource->get('template'),
        'tvs' => $resource->getTemplateVars(),
        'parent' => $resource->get('parent'),
        'publishedon' => $resource->get('publishedon'),
    ];
}

header('Content-Type: application/json');
echo json_encode($output, JSON_PRETTY_PRINT);

然後為你的目標 CMS 編寫匯入腳本。這是沒有光彩的工作,但這是一次性的工作。

步驟 3:構建你的 Next.js 前端

create-next-app 開始,將你的模板構建為頁面元件。你的 MODX 模板 → 頁面配置映射可能看起來像:

MODX 概念 Next.js 等價物
模板 版面配置元件
React 元件
片段 伺服器動作 / API 路由
模板變數 CMS 欄位
資源 頁面 / 內容條目
[[*field]] 標籤 Props / 資料擷取
外掛程式(事件鉤子) 中介軟體
[[!uncached]] SSR / 動態渲染
[[cached]] SSG / ISR

步驟 4:處理 URL 重新導向

這是人們搞砸的地方。每個舊 MODX URL 都需要 301 重新導向到其新 Next.js 等價物。構建重新導向對應並將其新增至 next.config.js

// next.config.js
module.exports = {
  async redirects() {
    return [
      {
        source: '/old-modx-path.html',
        destination: '/new-path',
        permanent: true,
      },
      // ... 數百多個,從你的匯出產生
    ]
  },
}

不要跳過這個。你的 SEO 取決於它。

步驟 5:並行運行 2-4 週

在現有 MODX 網站旁邊部署 Next.js。測試一切。檢查分析。驗證表單運行。然後翻轉 DNS。

選擇無頭 CMS 來替代 MODX

Next.js 是你的前端,但你仍然需要在某個地方管理內容。以下是流行選項對於 MODX 難民的比較方式:

CMS MODX 開發人員的學習曲線 內容建模 定價(2026) 自行託管選項
Sanity 中等 優秀(代碼定義的結構) 免費層,然後 $15/user/mo 否(僅雲)
Strapi 不錯(基於 UI) 免費(自行託管),雲從 $29/mo
Contentful 中等 不錯 免費層,然後 $300/mo
Payload CMS 優秀(代碼定義的結構) 免費(自行託管),雲從 $50/mo
Directus 靈活 免費(自行託管),雲從 $99/mo

如果你喜歡 MODX 的靈活性和自行託管功能,Payload CMS 或 Strapi 會感到最熟悉。如果你想要最佳的開發人員體驗並且不介意僅雲端,Sanity 很難超越。

我們通過我們的 無頭 CMS 開發實踐與所有這些進行了廣泛的工作,正確的選擇確實取決於你的團隊的舒適度和預算。

實際性能提升:遷移前後

我在 2025 年底將一個中等規模的 MODX 網站(大約 400 頁、部落格 + 服務 + 投資組合)遷移到帶有 Sanity 的 Next.js。以下是實際數字:

度量 MODX(優化) Vercel 上的 Next.js 改進
Lighthouse 效能 72 98 +36%
最大內容繪製 2.8s 0.9s -68%
首位元組時間 680ms 45ms -93%
核心網頁生命力通過 部分 完整通過
建置/部署時間 手動 FTP 42s 自動部署 白天和黑夜
月度託管成本 $45/mo(VPS) $0(Vercel 免費層) -100%

僅 TTFB 改進就令人震驚。MODX 必須啟動 PHP、連接到 MySQL、執行片段、組裝塊並提供回應——即使使用快取。靜態產生的 Next.js 頁面在毫秒內從 CDN 邊緣節點提供。

你會錯過什麼(以及你不會)

你會錯過

  • 管理員 UI:MODX 的管理面板對內容編輯器來說確實很直觀。大多數無頭 CMS 管理面板都有學習曲線。
  • 脈絡內編輯:在看到它呈現的地方編輯內容。大多數無頭設定需要在 CMS 和預覽之間切換。(Sanity 的演示工具和 Payload 的實況預覽正在縮小這一差距。)
  • 簡單性:一台伺服器、一個資料庫、一個程式碼庫。這有其美妙之處。無頭堆疊有更多活動部分。
  • 社群氛圍:MODX 社群雖然很小,但非常親密和充滿幫助。

你不會錯過

  • 清除快取:無盡的清除快取刷新週期。
  • TV 管理:為每個欄位通過 UI 建立和管理模板變數。
  • 資料庫焦慮:當你的 MySQL 連接在流量尖峰時達到上限時的那種沉沒感。
  • FTP 部署:或任何你用來推送更改的手動過程。
  • 外掛程式事件除錯:試圖找出哪個外掛程式何時、以什麼順序發動。

成本比較:運行 MODX vs Next.js

讓我們對總擁有成本而不僅僅是託管成本持現實態度。

成本類別 MODX(年度) Next.js + 無頭 CMS(年度)
託管 $540-$1,200(VPS/共享) $0-$240(Vercel/Netlify)
CMS 許可證 $0(開源) $0-$3,600(因 CMS 而異)
SSL 憑證 $0-$100 $0(包括)
CDN $0-$600 $0(包括)
安全監控 $200-$500 最少(沒有伺服器)
伺服器維護 $500-$2,000(時間或外包) $0
開發人員時薪 $75-$120(稀缺人才) $100-$175(豐富人才)
總計(不包括開發時間) $1,240-$4,400 $0-$3,840

萬變不離其宗的是開發人員費率。MODX 開發人員的時薪便宜如果你能找到他們。但稀缺性隨著時間的推移推高費率,你通常會因為誰可用而不是選擇最佳人選。

如果你正在評估你特定情況的遷移成本,我們在這裡分解了我們的 定價方法——我們對這些項目的實際成本是透明的。

常見問題

典型的 MODX 到 Next.js 遷移需要多長時間?

對於有 100-500 頁的網站,預期投入 6-10 週,需要一個專屬的團隊。內容建模和遷移需要約 2 週,構建 Next.js 前端需要 3-5 週,QA/測試/重新導向填補其餘部分。較大的網站,具有複雜的自訂片段或繁重的電子商務整合,可能需要 12-16 週。最大的變數是需要重寫多少自訂 PHP 邏輯。

我可以保留我的 MODX 管理面板並只將 Next.js 用於前端嗎?

從技術上講,是的——你可以在 MODX 中構建 REST API 層並使用 Next.js 使用它。但這給了你兩個世界最壞的情況:你仍然維護 PHP 伺服器、MySQL 資料庫和所有安全問題,同時還要維護一個單獨的前端。除非你有非常具體的原因,否則最好將內容遷移到專為無頭設計的 CMS。

在遷移期間我會失去 SEO 排名嗎?

不會,如果你正確處理重新導向。關鍵步驟是:盡可能保持相同的 URL 結構,為任何更改的 URL 設定 301 重新導向,保持元資料完整,並在啟動後將更新的網站地圖提交給 Google Search Console。我們遷移的大多數網站在 4-8 週內看到排名改進,這歸因於更好的核心網頁生命力分數。

MODX 網站帶有 FormIt 表單和複雜的工作流程怎麼樣?

表單是遷移中較棘手的部分之一。FormIt 在一個軟體包中處理驗證、電子郵件發送、鉤子和垃圾郵件防護。在 Next.js 中,你通常會組合伺服器動作以進行處理、Zod 以進行驗證,以及像 Resend 或 SendGrid 這樣的服務以進行電子郵件傳遞。它更明確,但也更可測試和可靠。

對於簡單的宣傳冊網站,Next.js 是不是過度設計了?

可能是。如果你的 MODX 網站實際上是 10 個靜態頁面和一個聯絡表單,Astro 可能是更好的選擇——它默認不發送 JavaScript,設定更簡單。但如果你以後有任何需要動態功能、身份驗證或複雜資料擷取的可能性,從 Next.js 開始可以防止你進行另一次遷移。

我的 MODX 擴充和自訂片段會發生什麼?

他們需要被重建。沒有自動轉換。自訂片段在 Next.js 中成為 API 路由或伺服器動作。像 Gallery、Articles 或 MIGX 這樣的擴充被你的無頭 CMS 的本地功能(通常更好)替代。像 Foxy 或 SimpleCart 這樣的電子商務擴充將被 Shopify 的店面 API、Snipcart 或 Medusa 替代。在你的遷移時間表中明確計劃這項工作。

我如何說服我的非技術性利益相關者批准這次遷移?

專注於他們關心的三件事:風險、成本和結果。風險:MODX 不斷萎縮的社群意味著在緊急情況下尋找開發人員變得每年都更難。成本:伺服器維護和安全修補並非免費的,即使 CMS 許可證是。結果:向他們展示核心網頁生命力比較,並解釋 Google 如何使用頁面速度作為排名因素。如果他們的競爭對手以不到一秒的速度加載,而他們則是 3 秒,那就是一個商業問題。

我可以逐步遷移還是必須一次性完成?

使用反向代理設定可以進行增量遷移——你將提供新頁面來自 Next.js,並將舊頁面路由到你的 MODX 伺服器。我們已經使用 nginx 配置完成了這種操作,其中特定路徑被代理到舊伺服器,而其他所有內容都進入新 Next.js 部署。它增加了複雜性,但對於有數百頁的網站,它讓你在數週或數月內分階段遷移,而不是進行有風險的大爆炸式切換。

如果你正在運行 MODX 網站並感受到我描述的痛點,最好的開始規劃時機是現在。不是因為天空要塌下來,而是因為在壓力下進行的遷移——在安全漏洞之後、在你的開發人員離職之後、在 PHP 版本達到生命週期終點之後——總是比計劃的更昂貴和更有壓力。如果你想討論你的特定情況,請與我們聯絡。我們已經經歷過足夠多次,知道地雷在哪裡。