Skip to main content
ExodeUI

EXODEUI DESKTOP

A little space for good ideas.

Choose your platform to get the official ExodeUI installer.

Looking for Intel Mac or other builds? Explore the web studio or check all download options.

Prefer the browser? Try for free in your browser →
運動系統8 分鐘閱讀·Updated 2026 年 10 月·ExodeUI 團隊

什麼是運動系統? UI 團隊實用指南

運動系統是決定產品如何運動的共享規則、令牌和組件。合一屬於什麼,如何管理,以及 ExodeUI 適合什麼地方。

直接總結與定義

核心要點

運動系統是決定產品如何運動的共享規則、令牌、組件和代碼集。它涵蓋了持續時間、緩動、彈簧、編排和互動狀態,因此團隊可以重複使用經批准的動作,而不是逐個螢幕地重建它。運動系統既是設計問題,也是管理問題:它需要一個擁有者、一個事實來源和一條生產路徑。

什麼是運動系統?

運動系統是設計系統中描述運動的一部分。它回答了靜態元件庫無法解決的問題:選單開啟的速度有多快,按鈕按下時如何反應,使用者中斷轉換時會發生什麼,以及哪些彈簧值屬於哪個表面。輸出不是樣式指南頁面。輸出是一小組可重複使用的決策,設計人員和開發人員可以應用這些決策,而無需每次都發明新的動畫。

運動系統屬於什麼

一個有用的運動系統有五個部分。跳過一個,系統就會變成一個沒有人會使用的檔案資料夾。

Principles

解釋產品個性的簡短規則。例如:運動確認第一幀上的輸入,或大表面移動得比小表面少。

代幣

持續時間、緩動和彈簧的命名值,例如motion.enter.fast或motion.spring.snappy。令牌使動議可審查並保持價值觀一致。

圖案

常見作業的可重複使用行為:輸入、退出、展開、重新排序、拖曳、關閉、成功和錯誤。

成分

已經使用這些模式的即時構建塊,因此團隊可以放入一個而不是閱讀文件並重建它。

治理

誰可以更改系統、如何審核變更以及如何停用已棄用的動議。

運動系統 vs 設計系統 vs 運動代幣

設計系統涵蓋顏色、類型、間距、組件和使用規則。運動系統是其內部的運動層,它通常有自己的所有者,因為運動變化的原因與顏色不同。運動令牌是該層的最小單元:計時和物理的命名值。令牌庫是必要的,但還不夠。如果沒有模式和即時組件,標記就變成了設計師在每個螢幕上以不同方式解釋的數字列表。

為什麼運動系統會失敗

大多數運動系統的失敗都是由於操作原因,而不是美觀原因。令牌存在於與元件斷開連接的文件中。批准的動議僅存在於開發人員無法運行的原型中。一個團隊採用了該系統,而另一個團隊則繼續提供硬編碼的持續時間。該系統沒有所有者,因此它會漂移。解決這個問題意味著將系統放在已經發生工作的地方:設計文件中、元件庫中和程式碼審查中。

如何管理運動系統

從一個小的、自有的表面開始,使系統成為簡單的路徑。

  • 為令牌選擇一個真實來源並從設計文件和程式碼庫連結到它
  • 按意圖而不是按值命名標記:motion.exit.fast 比 Motion.200ms 更有用
  • 在添加更多令牌之前發送一小組模式
  • 透過前後記錄查看運動變更(例如程式碼變更)
  • 追蹤重複使用:有多少新元件使用核准的模式而不是自訂計時
  • 按計劃淘汰舊值,以便系統不會累積重複項

ExodeUI 適合的地方

ExodeUI 將運動保持在開啟的 .exode 檔案內,而不是在單獨的規範中。佈局、狀態、時間軸、彈簧物理、邏輯和輸入一起存在,運行時套件以 React、Vue、Svelte、Angular、Solid、React Native、SwiftUI 和 Flutter 播放檔案。這為運動系統提供了工作參考:設計人員可以打開批准的元件,開發人員可以檢查相同的文件,AI編碼工具可以透過MCP伺服器對其進行編輯。該文件不能取代治理。它只是為治理提供了一些具體的指向。

如何在一次衝刺中啟動運動系統

審核您最常用的十個組件,並列出其中的每個持續時間、曲線和彈簧。將執行相同工作的值分組並命名群組。選擇涵蓋大多數互動的五種模式。為每個模式建立一個參考元件,記錄何時使用它,並將標記新增到您的設計和程式碼庫中。然後透過新系統運行單一功能並測量它仍然需要多少自訂值。該數字是您下一個衝刺的基線。

生產實施片段

互動組件實現
import { ExodeUICanvas } from 'exodeui';

// The motion system lives in the .exode file. Your app supplies inputs
// and listens for events; it does not restate spring values in code.
export function SystemButton({ pressed, onConfirm }) {
  return (
    <ExodeUICanvas
      src="/system_button.exode"
      inputs={{ pressed }}
      onTrigger={(name) => name === 'confirm' && onConfirm()}
    />
  );
}

要記住的關鍵 Principle

  • 運動系統是設計系統的運動層,而不是原型影片的資料夾
  • 它需要原則、代幣、模式、即時組件和治理
  • 沒有使用規則的代幣會變成每個團隊都有不同解釋的數字
  • 應像代碼更改一樣審查運動更改
  • ExodeUI 將運動、狀態和邏輯保存在一個運行時可以播放的開啟檔案中

常見問題解答

相關指南和範例

互動式 UI 只需設計一次,交付同一個檔案。

在 ExodeUI 中以視覺方式建立狀態、彈簧物理與邏輯,並在 React、SwiftUI、Flutter 等中播放同一個檔案。免費開始。

免費試用