Headless Drupal——你需要知道的一切指南
已發表: 2020-07-24今天,用戶體驗 (UX) 不僅僅是用戶在與您的網站交互時的感受。 在這個界面和 API 快速增長的世界中,內容在為您的用戶提供卓越的 UX 方面發揮著至高無上的作用。 為了跟上步伐,您需要採用熱銷、快速發展的前端技術,如 Angular JS、React JS 等,它們可以以類似應用程序的速度交付您的內容。
Headless Drupal(或解耦 Drupal)就是這樣一種方法,因其提供出色數字體驗的創新能力而廣受歡迎。 像 Weather.com、The Tonight Show、Great Wolf Resorts、Warner Music Group 等大公司已經採取了無頭 Drupal 路線,為他們的客戶提供交互式和獨特的前端設計和快速加載的網站。 由於 Drupal 8 對 API 優先架構的承諾,內容可以在任何地方使用和顯示。
什麼是無頭 CMS?

在這個數字世界中,是否去無頭是一個相當棘手的決定。 那麼關於無頭的整個嗡嗡聲是什麼? 簡單地說,在無頭 CMS 架構中,CMS 的前端(內容的消費者)與後端(內容的提供者)分離。 這不僅使您的內容能夠在任何地方交付,還使您能夠利用提供無與倫比的用戶體驗的最新前端技術。
什麼是無頭/解耦 Drupal?
通常,Drupal 網站旨在處理多任務。 這意味著,Drupal 管理兩者——後端內容管理以及內容的前端呈現。 毫無疑問,Drupal CMS 本身可以為最終用戶提供豐富的用戶體驗,但是當歸結為對請求的即時響應、在不同界面中無縫提供內容時,它確實存在不足。 在解耦的 Drupal 架構中,不是使用 Drupal 的主題層,而是使用客戶端框架,如 AngularJS、React 或 Backbone.JS。 用戶請求不必一直由服務器處理,這可以顯著提高 Drupal 網站的速度和用戶體驗。
Drupal 8 的 API 優先架構邁出了第一步,在核心(Drupal 8.0)中引入了 REST API。 但是,它也帶來了一系列挑戰(設置和使用)。 從那時起,在提供更好的 RESTful 和非 RESTful Web 服務(如 JSON-API 和 GraphQL)方面進行了許多改進。
從技術上講,無頭 Drupal 網站以 HTTP/JSON 格式發送數據。 一個強大的前端 UI 框架呈現這些數據並提供網頁。

分類分離的 Drupal
在傳統的 Drupal CMS 架構中,瀏覽器調用由 PHP 邏輯處理的請求,然後呈現 HTML 並將其發送回瀏覽器。 當然,開發人員可以嵌入 Javascript 以進行一些客戶端改進,但這可能導致不同模塊使用不同客戶端框架的情況。 從而使其成為一個極其複雜的系統。
漸進解耦
如果您希望保留您的 Drupal Theme 層,同時又能夠向瀏覽器提供即時響應,那麼漸進式解耦方法是您最好的選擇。 在這裡你可以吃蛋糕也可以吃! 初始應用程序狀態由 Drupal 呈現,然後可由客戶端編碼進行操作。 模塊可以用 PHP 或 Javascript 編寫,同時您可以利用 Drupal 的強大性能優勢。
此版本的解耦 Drupal 允許上下文化界面、內容工作流、站點預覽和其他功能保持可用並與 Drupal 整體集成。 雖然內容編輯器和站點組裝者對這個分離的 Drupal 版本感到賓至如歸,但它也允許前端開發人員追求自己的速度,同時通過將頁面的一部分專用於 JavaScript 框架來保持站點組裝者暢通無阻。
簡而言之,逐步解耦的 Drupal 提供了一種方法,可以很好地在佈局管理等編輯需求和開發人員希望使用更多 JavaScript 之間取得完美平衡。

說明這些示例的漸進式去耦頻譜的圖表 – Source-Acquia

完全解耦架構
然後是完全解耦——Drupal 的表示層完全被客戶端框架取代。 此版本的解耦 CMS 允許不間斷的工作流,因為客戶端框架還充當服務器端預渲染器。 Drupal CMS 純粹用作處理所有後台爵士樂的內容存儲庫。 當您完全忽略 Drupal 的主題功能時,您也就放棄了 Drupal 提供的一些有效的性能優勢。 此外,還需要進行大量重建以完全分離 Drupal 網站的管理界面和前端。 在服務器端使用 Javascript 也會使基礎設施要求復雜化。
近年來,隨著 JavaScript 的增長沒有放緩的跡象,完全解耦的 Drupal 架構獲得了更多關注,但它涉及內容結構與其表示之間的關注點分離。 簡而言之,創建一個完全解耦的 Drupal 系統就像將您的 Web 體驗視為需要提供內容的單獨應用程序。
哪種解耦 Drupal 解決方案最適合您?
傳統上,Drupal CMS 旨在同時完成內容管理和呈現整個網站的前端。 壓力很大,你不覺得嗎? Drupal 專家認為,Drupal 的優勢在於其後端的強大功能和靈活性,它首先需要面向服務而不是面向 HTML。 解耦 Drupal 意味著讓其他系統管理前端,而 Drupal 負責後端系統。 你問,為什麼解耦 Drupal 是個好主意?
如果您想採用 Drupal 無法提供的尖端和現代前端技術,您將需要一個強大的前端框架,如 React JS 或 Angular JS。 使用無頭 Drupal 方法,您可以擁有所有這些,並且仍然保持強大的後端 Drupal CMS。
- 使用 Headless Drupal 架構,您可以“一次編寫,隨處發布”。 該系統允許內容編輯者、營銷人員和企業主創建一次內容並無縫地將其傳送到多個界面。
- 使用解耦 CMS,將前端與後端內容管理系統分離將使 Drupal 內容模型具有更大的靈活性和效率。 就像委派工作如何減少您的工作量並提高生產力一樣。
- 分層架構促進了更安全的系統。 站點管理員可以限制對基礎架構不同區域的訪問。
- Headless Drupal 允許前端開發人員完全控製網站的呈現、UI 設計和 UX。 出色的客戶端框架和經驗豐富的前端開發人員的結合可以為您提供一個具有豐富、更快、類似應用程序的用戶體驗和無縫交互的網站。
- 使用無頭 Drupal 模型可以更輕鬆、更高效地與第三方應用程序集成。
- 前端和後端開發人員都可以獨立工作,從而可以高效快速地交付項目。
- 如果您想重新設計您的網站,您將不必重新實現您的 Drupal CMS。 同樣,無需更改前端即可完成後端系統的改造。
無頭 Drupal 適合所有人嗎?
儘管解耦 Drupal 可以幫助您實現不間斷和類似應用程序的用戶體驗的目標,但它可能並不適合所有人。 這就是為什麼——
- 像新聞網站或博客這樣的網站,不需要太多的用戶交互,將不會從分離他們的 Drupal 網站中受益。
- 當您為您的網站選擇完全解耦的 Drupal 架構時,您將放棄 Drupal 主題層附帶的一些頂級(和免費)功能,例如塊放置、佈局和顯示管理、內容預覽、UI 本地化、跨站點腳本(XSS)等安全特性。其中一些不能被客戶端框架複製。
- 如果預算是一個問題,你需要記住你必須為有經驗的前端開發人員支付的價格。 還有從頭開始重建缺失的(否則可以免費獲得)Drupal 功能的成本。
誰使用無頭 Drupal?
許多頂級企業都採用了無頭 Drupal 方法並成功地做到了! 他們的網站加載速度快,並為所有設備和界面的用戶提供交互式體驗。 一些例子是 -
- 吉米法倫今晚秀– 使用 Backbone.js 和 Node.js 作為前端
- Weather[dot]com – 使用 Angular.js 作為前端
- Great Wolf Resorts – 使用 CoffeeScript 和 Spine 框架
- EC Red Bull Salzburg – 使用 Angular.js 作為前端
- Warner Music Group – 使用 Angular.js 作為前端
……這裡的清單上還有更多。
