頁面總覽
一種頁型,學一次。 元件章回答「這顆控制項怎麼用」,模式章回答「這類操作怎麼運作」, 這一章回答中間那一層:一整頁怎麼組。
為什麼需要頁面層
內部系統的畫面其實高度重複:找一筆資料、看一筆資料、填一張表、看一眼狀況、改一個設定。 但同樣的五件事,三個系統可以長出三種版面——主要動作一下在左上、一下在右下, 儲存回饋一下彈窗、一下跳頁。每換一個系統,使用者就要重學一次「東西在哪裡」。
把常見頁收斂成頁型之後,規則變成:同一種頁在每套系統長一樣。 清單頁的主要動作永遠在右上、表單頁的錯誤永遠緊貼欄位、儀表板永遠唯讀—— 學習成本從「每個系統 × 每個畫面」降到「每種頁型一次」。
三層分工
| 層 | 管什麼 | 文件 |
|---|---|---|
| 站台層 | 側邊欄分區、全域狀態列、深連結、單一出口 | 後台系統的資訊架構 |
| 單頁層 | 一頁之內的區塊順序、組成元件、行為規範 | 本章 |
| 區塊層 | 每個元件自身的用途、狀態、無障礙 | 元件章 |
本章不收應用外殼(Layout、Sidebar、路由)——那是宿主的職責, 規範在站台層那一頁;本章從「進到這一頁之後」開始管。
五種頁型
| 頁型 | 回答的問題 | 主角元件 | 文件 |
|---|---|---|---|
| 清單頁 | 那一筆在哪? | DataTable | 清單頁 |
| 明細頁 | 這一筆的全貌? | EditableField + TabPills | 明細頁 |
| 表單頁 | 建立一筆新的 | Input 家族 + Stepper | 表單頁 |
| 儀表板 | 整體狀況如何? | Charts + KPI 磚 | 儀表板 |
| 設定頁 | 改變系統的行為 | Card 分區 + Dialog | 設定頁 |
拿不準的時候,先問這一頁回答什麼問題,不要先想版面。 一頁想同時回答兩個問題(又要清單又要總覽),通常代表該拆成兩頁。
登入頁刻意不收:它高度品牌化、又在後台外殼之外,抽掉品牌之後剩下的 只有「Card + Input + Button」,不值得一種頁型。
跨頁一致性守則
這六條跨頁型通用。各頁型文件不再重複,違反任何一條都算走樣:
| # | 守則 | 理由 |
|---|---|---|
| 1 | 頁面標題永遠在左上,一頁只有一個 h1 | 使用者靠它確認「我在哪」 |
| 2 | 每頁至多一顆主要動作,位置固定(清單頁右上、表單頁右下) | 兩顆主要按鈕=沒有主要按鈕 |
| 3 | 操作回饋的去向全站固定一種 | 一下彈窗一下橫幅,使用者會漏看 |
| 4 | 錯誤緊貼發生處,頂部只做彙總 | 錯在第 8 欄、訊息在頁首,等於要人玩找碴 |
| 5 | 同一實體跨頁同色(分類色跟實體走) | Charts 配色策略與 GraphCanvas 的同一條規則 |
| 6 | 同一個東西全站同一個名字 | 清單頁叫「項目」、明細頁叫「紀錄」,使用者會以為是兩種東西 |
新畫面動工前先對照這張表與該頁型的 Rules,把「跟規範不同」當成需要理由的事。
不要為單一畫面微調共同守則——「這一頁比較特別」重複五次之後,頁型就不存在了。 真的特別,走 RFC 改規範,讓所有頁一起變。
新專案:從頁面開始規劃
既有系統的導入路徑是三階段(先 token、新畫面用元件、按需查模式)。 全新專案不必走那條漸進路——還沒有畫面要遷就,第一天就可以從頁型開始:
- 列出所有畫面,各標上頁型。 規劃期的畫面清單通常就是「幾張清單、幾張表單、 幾張明細、一兩個儀表板、一頁設定」。標不出頁型的畫面,先回頭想它回答什麼問題。
- 每頁抄骨架與最小安裝集。 各頁型文件末尾都有「取用」段—— 一條指令裝齊那種頁需要的元件,版面照「頁面解剖」的區塊順序排。
- 照各頁 Rules 驗收。 每頁型的行為規範就是驗收清單; 對照組合 story 看「組出來應該長怎樣」。
裝之前的前置條件(components.json、@/* 別名、token 安裝)見
三種取用方式;上線之後怎麼跟著規範一起演進,見
跟上新版。
收錄門檻
頁型跟元件過同樣的三關:去領域化、通用性、三次法則。 頁面特別容易寫成「某個系統的畫面」——收錄前先自問:換一個領域, 這一頁的區塊順序與規則還成立嗎?只有某個業務流程需要的複合畫面,不收。
缺件與後續
組這五種頁會遇到的缺口如下。先用替代方案,不要自己長一個私有版—— 需要正式元件時走 RFC 流程,過三次法則才收。 「認領」欄直達缺件認領表單: 回報一個使用場景=三次法則的一次證據,三個場景湊齊就會動工。
| 缺件 | 目前替代 | 用在 | 認領 |
|---|---|---|---|
| PageHeader/Breadcrumb | 頁首區照解剖規範手排 | 明細頁 | 提出 |
| Drawer/Popover/DropdownMenu | Dialog 或就地展開 | 各頁 | 提出 |
(表單的下拉選項與這張表逐字一致——改表要同步改 .github/ISSUE_TEMPLATE/missing-piece.yml。)
v0.11.0 已收錄七件,替代方案功成身退:
Toast、Switch/Textarea/RadioGroup、
Skeleton(規範正本在〈載入中〉,DataTable 內建 loading)、
DateRange 期間選擇、
Form 包裝 → FormField/FieldError(見 Input 的錯誤態)。
AppShell 與 Sidebar 不在此列——外殼不收進元件庫是刻意決策, 規範正本在站台層。