跳到主要內容
版本:3.5.2

架構

Architecture overview

這個圖表說明 Docusaurus 如何建置您的應用程式。外掛程式各自收集自己的內容並傳送 JSON 資料,佈景主題提供接收 JSON 資料作為路由模組的配置元件佈局。套件組建器整理所有元件,並傳送伺服器套件組和用戶端套件組。

儘管您(外掛程式作者或網站建立者)總是寫著 JavaScript,請務必記住 JS 實際上是在不同的環境中執行

  • 所有外掛程式生命週期方法都以 Node 執行。因此,在我們在程式碼庫中支援 ES 模組之前,外掛程式原始程式碼必須以可匯入的 ES 模組,或可 require'd 的 CommonJS 形式提供。
  • 佈景主題程式碼以 Webpack 建置。它們可作為 ESM 提供,遵循 React 慣例。

外掛程式程式碼和佈景主題程式碼從不直接進行互相匯入:他們僅透過通訊協定(在本例中,透過 JSON 暫存檔和呼叫 addRoute)進行通訊。一個有用的心智模型是,想像外掛程式不是用 JavaScript 編寫,而是用 Rust 等其他語言編寫。對於使用者,與外掛程式互動的唯一方法是透過 docusaurus.config.js,它本身在 Node 中執行(因此您可以使用 require 並將回呼函式傳遞做為外掛程式選項)。

在打包過程中,設定檔本身會序列化並打包,讓主題能透過 useDocusaurusContext() 存取設定選項,例如 themeConfigbaseUrl。不過,siteConfig 物件只包含可序列化的值(在 JSON.stringify() 後仍能保留的值)。函式、正規表示式等在客戶端上會遺失。themeConfig 的設計是完全可序列化的。