xyflow/xyflow:30.1k Star 开源神器,构建节点式UI的强大React和Svelte库

xyflow/xyflow:30.1k Star 开源神器,构建节点式UI的强大React和Svelte库

无需从零开始,快速搭建可定制的流程图和节点编辑器

项目地址: https://github.com/xyflow/xyflow

xyflow 是一个强大的开源库集合,旨在帮助开发者轻松构建基于节点的用户界面。它提供了 React Flow 和 Svelte Flow 两个库,分别用于 React 和 Svelte 平台。这两个库都具有开箱即用且高度可定制的特性,让开发者能够快速搭建各种流程图、节点编辑器等应用。

该项目主要包含以下几个核心包:

  • React Flow 12 (@xyflow/react): 用于 React 平台的节点式 UI 库。
  • React Flow 11: React Flow 的 v11 版本分支。
  • Svelte Flow (@xyflow/svelte): 用于 Svelte 平台的节点式 UI 库。
  • Shared helper library (@xyflow/system): 共享的辅助库。

主要特点:

  • 易于上手: 提供了详细的文档和示例,可以快速了解和使用。
  • 高度可定制: 几乎所有组件都可以定制,满足各种 UI 需求。
  • 交互性强: 支持节点拖拽、连接、编辑等多种交互操作。
  • 多平台支持: 同时支持 React 和 Svelte 平台,方便在不同项目中使用。
  • 内置常用组件: 例如 MiniMap、Controls 和 Background,减少重复开发。

使用示例:

以下分别是 React Flow 和 Svelte Flow 的基本用法示例:

React Flow:

import { useCallback } from 'react';
import {
  ReactFlow,
  MiniMap,
  Controls,
  Background,
  useNodesState,
  useEdgesState,
  addEdge,
} from '@xyflow/react';
import '@xyflow/react/dist/style.css';

const initialNodes = [{ id: '1', position: { x: 0, y: 0 }, data: { label: '1' } },{ id: '2', position: { x: 0, y: 100 }, data: { label: '2' } },];
const initialEdges = [{ id: 'e1-2', source: '1', target: '2' }];

function Flow() {
  const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);
  const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges);
  const onConnect = useCallback((params) => setEdges((eds) => addEdge(params, eds)), [setEdges]);

  return (
    <ReactFlow
      nodes={nodes}
      edges={edges}
      onNodesChange={onNodesChange}
      onEdgesChange={onEdgesChange}
      onConnect={onConnect}
    >
      <MiniMap />
      <Controls />
      <Background />
    </ReactFlow>
  );
}

export default Flow;

Svelte Flow:

<script lang="ts">
  import { writable } from 'svelte/store';
  import { SvelteFlow, Controls, Background, BackgroundVariant, MiniMap,} from '@xyflow/svelte';
  import '@xyflow/svelte/dist/style.css'

  const nodes = writable([
    { id: '1', type: 'input', data: { label: 'Input Node' }, position: { x: 0, y: 0 } },
    { id: '2', type: 'custom', data: { label: 'Node' }, position: { x: 0, y: 150 } }
  ]);

  const edges = writable([
    { id: '1-2', type: 'default', source: '1', target: '2', label: 'Edge Text' }
  ]);
</script>

<SvelteFlow {nodes} {edges} fitView on:nodeclick={(event) => console.log('on node click', event)}>
  <Controls />
  <Background variant={BackgroundVariant.Dots} />
  <MiniMap />
</SvelteFlow>

xyflow 通过提供现成的组件和灵活的定制选项,极大地简化了节点式 UI 的开发过程。它解决了开发者需要从零开始构建流程图和节点编辑器的痛点,节省了大量时间和精力。

怎么样,看完这个项目是不是觉得很棒? 这个项目对于需要构建流程图、节点编辑器或任何基于节点的用户界面的开发者来说非常有用! 快来转发给你的朋友们一起学习使用吧!

Read more

1.7k Star开源神器:Keyboard Cowboy - 助你成为 macOS 效率牛仔!

1.7k Star开源神器:Keyboard Cowboy - 助你成为 macOS 效率牛仔!

告别繁琐操作,用这款神器驯服你的 Mac,让效率飙升! 项目地址: https://github.com/zenangst/KeyboardCowboy Keyboard Cowboy 是一款专为 macOS 设计的效率工具,旨在通过自动化操作,简化复杂任务,让你像一位真正的牛仔一样掌控你的 Mac。无需再将手从键盘上移开,即可完成各种操作! Keyboard Cowboy 支持 macOS v13.0+。它通过以下方式提升你的效率: * 自动化工作流: 通过应用上下文触发器,你可以设置响应各种条件的工作流,例如应用程序的打开、关闭或切换。一旦创建了工作流,它将自动运行,无需任何键盘快捷键或手动干预。 * 功能键绑定: 将常用命令绑定到功能键,极大地简化程序员和高级用户的工作流程。 * 简化复杂任务: 自动化重复性动作、启动应用程序和脚本、控制系统设置、操作文件和文件夹,所有这些都可以通过键盘完成。 核心功能和特点: * Groups(群组): 灵活易用,方便管理你的命令。

By majichen
1.7k Star开源神器:Tabiew - 命令行下的数据分析利器,让你的数据一览无余!

1.7k Star开源神器:Tabiew - 命令行下的数据分析利器,让你的数据一览无余!

告别繁琐工具,Tabiew助你轻松玩转 CSV、Parquet等多种格式数据,还能用SQL查询! 项目地址: https://github.com/shshemi/tabiew Tabiew 是一款轻量级的 TUI (终端用户界面) 应用程序,旨在帮助用户更方便地查看和查询表格数据文件,支持 CSV、Parquet、Arrow 等多种格式。 告别笨重的 GUI 工具,在命令行下也能拥有高效的数据浏览和分析体验。 Tabiew 的亮点: * Vim 风格的键位绑定: 如果你熟悉 Vim,那么 Tabiew 你可以快速上手,操作更加高效。 * 强大的 SQL 支持: 可以直接使用 SQL 语句查询数据,筛选、排序、统计,不在话下。 使用 Q SELECT * FROM

By majichen
16.0k Star开源神器:命令行交互式速查表,解放你的记忆力!

16.0k Star开源神器:命令行交互式速查表,解放你的记忆力!

告别死记硬背,用 Navi 轻松掌握各种命令,成为命令行大师! 项目地址: https://github.com/denisidoro/navi Navi 是一款交互式的命令行速查表工具,它能帮你浏览和执行命令,而无需死记硬背。你可以自己编写速查表,也可以从维护者那里下载。参数的建议值会动态地显示在一个列表中,极大地提升了效率。 Navi 的优势: * 无需牢记所有 CLI 命令 * 无需复制粘贴中间命令的输出 * 减少输入 * 学习新的单行命令 Navi 在底层使用 fzf 或 skim,可以作为命令或 shell 部件(类似于 Ctrl-R)使用。 安装方式: 推荐使用以下命令安装 Navi: brew install navi Navi 可以通过多种包管理器安装,支持的平台非常广泛,包括但不限于: * macOS (通过

By majichen
16.2k Star开源神器:你的终端信息仪表盘,效率提升不止一点!

16.2k Star开源神器:你的终端信息仪表盘,效率提升不止一点!

告别频繁切换!WTF将你需要的关键信息汇聚于终端,一目了然! 项目地址: https://github.com/wtfutil/wtf WTF (又名 'wtfutil') 是你的个人终端信息仪表盘,让你能够一目了然地访问那些非常重要但又不常用的统计数据。 想象一下,无需打开多个网页或应用程序,只需在终端中就能掌握所有关键信息,效率直接拉满! WTF已被全球数千名开发者和技术人员使用,它是免费且开源的。 WTF能为你做什么? * 集中显示信息: 将各种来源的数据整合到一个终端界面中。 * 高度可定制: 通过配置文件灵活添加和配置模块。 * 提升效率: 告别在不同应用间切换,快速获取所需信息。 支持平台: WTF 可以在以下平台运行: * macOS (通过 Homebrew 或 MacPorts 安装) * Linux (通过源码安装) * Docker 特色模块: WTF 通过模块化的方式集成各种服务和信息。以下是一些热门模块,助你快速上手: * DigitalOcean: 监控你的 DigitalOcean

By majichen