能在建置期算完,代表樣式不依賴執行期的任意值

主張:「把樣式生成移到建置期」常被當成純效能決策,但它其實同時是可預測性的決策——這兩件事是同一個限制的兩面。

Linear 的五個選型條件裡,第 1 條(樣式生成要在建置期)和第 4 條(跨檔案合併要可預測、不玩 specificity 遊戲)看起來是兩個目標。實際上後者是前者的副產品:

  • 一段樣式能在建置期算完,前提是它不依賴只有執行期才知道的任意值。
  • 不依賴執行期的值,輸出就是固定的;輸出固定,合併順序才可能是決定性的。
  • 反過來說,runtime CSS-in-JS 的不可預測性不是 API 設計失誤,是保留了執行期任意值必然要付的代價。

所以挑樣式方案時,「能不能靜態抽取」這個問題可以同時當成兩個問題的代理指標:跑得快不快,以及我能不能事先推理出最後長什麼樣。

延伸:這也是為什麼 diff 可以當樣式遷移的驗收標準——見 怎麼評估一個 API 的 agent 人體工學?。

相關:CSS-in-JS 的成本是渲染期產生樣式與注入規則