核心概念
元件架構
了解 OpenPress 的核心 React 元件階層:從最外層的工作區 (Workspace),到單一出版物 (Press),再到具體的頁面框架 (Frame)。
OpenPress 的核心哲學是將「文件」視為一棵 React 元件樹。這讓您可以像開發網頁或應用程式一樣,使用宣告式(Declarative)的語法來組合文件內容。
為什麼要將文件元件化?
傳統的所見即所得(WYSIWYG)編輯器雖然直覺,但在面對複雜的排版、跨頁邏輯或設計系統時,往往顯得力不從心。將文件轉化為元件樹,帶來了根本性的優勢:
- 精確的結構控制: 無論是人類作者還是 AI Agent,都能透過精確的標籤語法來控制文件的結構,消除了排版上的模糊地帶。
- 高度的重用性: 複雜的設計模式可以被封裝成獨立的元件,在不同的文件或專案中重複使用,確保視覺的一致性。
- 邏輯與內容分離: 頁面的幾何尺寸、分頁邏輯與實際的內容是分離的。這使得同一份內容可以輕易地適應不同的輸出格式。
核心階層模型
為了解決從單一文件到龐大文件庫的各種需求,OpenPress 定義了三個層次的抽象概念:
工作區 (Workspace)
工作區是整個專案的根基。在概念上,它代表了一個完整的上下文環境。一個工作區內可以包含多個不同的出版物,例如一份年度報告的 PDF 與其對應的發表會簡報。工作區負責管理跨出版物的共用設定與資源。
出版物 (Press)
出版物是讀者所認知的一份「獨立文件」。它決定了這份文件的基本屬性,例如標題、頁面尺寸(如 A4 或 16:9)以及內容的來源。
在內部運作上,出版物扮演著「排版引擎」的角色。它需要理解內容的長度,並在匯出(例如轉存為 PDF)時,動態計算內容應如何跨頁流動,以產生正確的頁數。
框架 (Frame)
框架是頁面上的實體表面。您可以將其想像為畫布上的不同區域。
有些框架是靜態且單一的,例如書籍的封面或封底,它們的內容與版面是固定的。另一種框架則負責承載動態流動的內容(例如文件的內文),這類框架會與出版物的排版引擎協作,當內容超出單一頁面時,自動產生新的實體頁面來延續內容。
透過這三個層次的組合,OpenPress 能夠以一致且具備高度延展性的方式,描述從簡單的社群媒體圖卡到複雜的多頁面報告的任何文件結構。