前端殼的三道客製縫:整頁、碎片、配色
後端有 platform 套件,前端對應的是 web-kit——登入、版型、選單、主題這些每個後台都要的殼。難題跟後端不同:前端的客製需求是視覺的、瑣碎的、無孔不入的。如果每個 app 想改個顏色都要 fork 整個殼,套件就死了。
我的答案是把客製收斂成三道明確的縫,由粗到細:
- 整頁替換——router 是 app 建的,dashboard、login 這種頁可以整頁換成自己的元件注入進去。適合「這頁我要完全不一樣」。
- 跨頁碎片——品牌角落、client adapter 這種散落在殼各處的小塊,用 setter 注入(
setBrandComponent(...))。殼在固定位置渲染你給的元件。 - 純配色——設計 token 全部收在一份
tokens.css,app 自帶一份同名變數檔 import 在後面蓋掉,整站換皮零元件改動。
縫以外的部分不開放——這不是傲慢,是保護:每多一個客製點,殼的每次演進都要多考慮一種破壞情境。三道縫是「夠用的最小表面積」。
與後端套件的一個關鍵不同:vite 直接吃原始碼
後端套件消費編譯產物(dist),web-kit 讓 vite 直接吃 TypeScript/Vue 原始碼——前端的 build 管線本來就要處理 .vue 檔,多一層預編譯只會把 HMR 與 sourcemap 弄糟。代價是消費端要處理依賴去重(兩份 vue 實例會炸 provide/inject),套件的 devDependencies 也要照顧消費端的 tsconfig。
同一個 monorepo,前後端套件走兩種完全不同的消費模式——形式服從各自生態的物理,而不是為了一致而一致。
讀到這裡若有一點收穫,替這顆種子澆一次水——匿名、一人一次。
⇄ 被這些筆記引用