Open Source

Vue Flow:Vue 3 高度可自訂的流程圖元件

Vue Flow 是一個 Vue 3 的可自訂流程圖元件,支援縮放、平移、小地圖和自訂節點,靈感來自 React Flow。

Keeping this site alive takes effort — your support means everything.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分! 無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!
Vue Flow:Vue 3 高度可自訂的流程圖元件

建立互動式基於節點的介面──無論是用於工作流程編輯器、視覺化程式工具,還是資料管線設計器──都是前端開發中最具挑戰性的任務之一。您需要處理縮放和平移、節點拖曳和定位、邊線路由和渲染,以及圖形互動的所有複雜性。Vue Flow 將 React Flow 互動模型的力量帶到了 Vue 3 生態系統中,提供一個精緻、高效能且深度可自訂的流程圖元件。

由 bcakmakoglu 建立,Vue Flow 專為 Vue 3 的 Composition API 量身打造,利用 Vue 的反應系統實現響應式節點更新和無縫狀態管理。該函式庫在 Vue 生態系統中獲得了顯著的關注,開發者用它來建立從 AI 工作流程編輯器到低程式碼平台再到網路拓撲視覺化器的各種應用。

Vue Flow 與眾不同之處在於它結合了開箱即用的功能性和深度自訂能力。您無需編寫任何互動程式碼即可獲得縮放、平移、小地圖、選取、拖放和鍵盤快捷鍵。但每個視覺元素──從節點渲染到邊線樣式再到控制項元件──都可以替換為您自己的自訂 Vue 元件。


Vue Flow 的架構如何運作?

Vue Flow 建立在一個分層架構之上,將圖形狀態管理、渲染和互動處理分離開來。

graph TD
    A[Vue Flow 元件] --> B[圖形狀態管理]
    A --> C[視口控制器]
    A --> D[互動層]
    B --> E[節點儲存庫]
    B --> F[邊線儲存庫]
    C --> G[縮放與平移]
    C --> H[小地圖]
    D --> I[選取]
    D --> J[拖放]
    D --> K[鍵盤]
    E --> L[節點渲染器]
    F --> M[邊線渲染器]
    L --> N[自訂 Vue 元件]
    M --> N

狀態管理層維護節點和邊線的反應式儲存庫,視口控制器處理攝影機變換,互動層將使用者輸入轉換為狀態變更。這種分離確保自訂元件只需關心渲染,無需處理互動邏輯。


Vue Flow 支援哪些節點和邊線類型?

Vue Flow 內建一組節點和邊線類型,同時讓建立自訂類型變得非常簡單。

類型類別選項自訂能力
預設節點內建標籤、圖示、連接點樣式屬性、CSS 變數
輸入節點內建單一目標連接點樣式、大小、顏色
輸出節點內建單一來源連接點樣式、大小、顏色
自訂節點使用者定義任何 Vue 3 元件完全控制渲染
貝茲邊線內建動畫、標籤、標記路徑、顏色、寬度
階梯邊線內建直角路徑樣式、動畫
平滑階梯內建圓角直角路徑樣式、動畫
直線邊線內建直線樣式、動畫

自訂節點是標準的 Vue 3 元件,接收節點資料作為 props,可以包含任何 HTML、子元件或互動式元素。自訂邊線遵循相同的模式,可以存取來源和目標節點的位置。


Vue Flow 公開哪些互動事件?

該函式庫提供了一個全面的事件系統,涵蓋每個使用者互動和狀態變更。

事件觸發時機承載資料
nodeClick使用者點擊節點節點 ID、事件、位置
nodeDrag使用者拖曳節點節點 ID、位置增量
edgeClick使用者點擊邊線邊線 ID、事件
connect使用者建立邊線來源節點、目標節點
selectionChange選取的節點/邊線變更選取 ID 陣列
viewportChange縮放或平移變更縮放層級、中心位置
nodeDoubleClick使用者雙擊節點節點 ID、事件
nodesChange任何節點變更變更類型和資料
edgesChange任何邊線變更變更類型和資料

事件遵循 Vue 3 的 emit 模式,可以在範本中使用標準的 @event 語法處理。事件承載資料以 TypeScript 型別化,使與型別安全程式碼庫的整合變得簡單直接。


如何在 Vue Flow 中建立自訂節點?

建立自訂節點是 Vue Flow 應用程式中最常見的擴充點,而該函式庫使其非常簡單。

自訂面向Vue Flow 方法範例
節點渲染自訂 Vue 3 元件包含任何 HTML 的 <template>
節點資料型別化 props 介面defineProps<NodeProps>()
節點連接點<Handle /> 元件位置、類型、樣式
節點連接可配置的連接點類型來源/目標、多個連接點
節點調整大小調整大小指令拖曳調整節點大小
節點右鍵選單自訂實作右鍵元件
節點分組巢狀節點支援父-子節點
節點驗證連接前回呼拒絕無效連接

自訂節點本質上是一個標準的 Vue 3 元件,接收節點特定的 props,並可以使用 Handle 元件來定義連接點。這個熟悉的模式意味著任何 Vue 開發者都可以建立複雜的自訂節點,而無需學習新的範式。


FAQ

什麼是 Vue Flow? Vue Flow 是一個為 Vue 3 設計的高度可自訂流程圖元件庫,靈感來自 React Flow。它提供縮放、平移、小地圖、自訂節點和邊線,以及完整的 TypeScript 支援,用於建立互動式基於節點的應用程式。

Vue Flow 與 React Flow 相比如何? Vue Flow 的靈感來自 React Flow,但它是為 Vue 3 的 Composition API 完全重新實作的。它提供類似的功能——自訂節點、邊線、小地圖、控制項——並針對 Vue 的反應系統進行了效能最佳化。

Vue Flow 支援哪些類型的節點和邊線? Vue Flow 支援內建節點類型,包括輸入、輸出和預設節點。自訂節點可以建立為 Vue 3 元件。邊線類型包括貝茲曲線、階梯、平滑階梯和直線,全部支援自訂樣式和標記。

Vue Flow 支援觸控裝置和行動裝置嗎? 是的,Vue Flow 包含行動裝置的觸控事件處理。使用者可以在平板和手機上使用觸控手勢拖曳節點、平移視口和縮放。

可以使用 Vue Flow 建立哪些類型的應用程式? Vue Flow 用於視覺化程式編輯器、工作流程自動化工具、聊天機器人建置器、資料管線設計器、心智圖應用程式、網路拓撲編輯器,以及任何需要互動式基於節點介面的應用程式。


延伸閱讀

TAG