# 介绍
# LogicFlow是什么
LogicFlow 是一款流程图编辑框架,提供了一系列流程图交互、编辑所必需的功能和灵活的节点自定义、插件等拓展机制。LogicFlow支持前端研发自定义开发各种逻辑编排场景,如流程图、ER图、BPMN流程等。在工作审批配置、机器人逻辑编排、无代码平台流程配置都有较好的应用。
更多资料请查看LogicFlow系列文章
# 安装
# 直接用<script>
引入
LogicFlow分为core
包和extension
包。由于LogicFlow本身会有一些预置样式,所以除了需要引入js, 还需要引入css。
<!--LogicFlow core包css-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@logicflow/core/dist/style/index.css" />
<!--LogicFlow extension包css-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@logicflow/extension/lib/style/index.css" />
<!--LogicFlow core包js-->
<script src="https://cdn.jsdelivr.net/npm/@logicflow/core/dist/logic-flow.js"></script>
<!--LogicFlow的插件支持单个引入,这里以菜单插件为例-->
<script src="https://cdn.jsdelivr.net/npm/@logicflow/extension/lib/Menu.js"></script>
LogicFlow所有的插件地址:https://cdn.jsdelivr.net/npm/@logicflow/extension/lib/ (opens new window)
# 使用npm引入
npm install @logicflow/core
npm install @logicflow/extension
# 绘制一个简单的流程图
import LogicFlow from '@logicflow/core'
import "@logicflow/core/dist/style/index.css";
const lf = new LogicFlow({
container: document.querySelector("#app"),
grid: true
});
lf.render({
nodes: [
{
id: "1",
type: "rect",
x: 100,
y: 100,
text: "节点1"
},
{
id: "2",
type: "circle",
x: 300,
y: 200,
text: "节点2"
}
],
edges: [
{
sourceNodeId: "1",
targetNodeId: "2",
type: "polyline",
text: "连线"
}
]
});
# 在vue或者react等前端框架中使用logicflow
LogicFlow本身是以umd打包为纯JS的包,所以不论是vue还是react中都可以使用。这里需要注意一个点,那就是初始化LogicFlow实例的时候,传入的参数container,必须要dom上存在这个节点,不然会报错请检查 container 参数是否有效
。
注意
LogicFlow支持初始化不传容器宽高参数,这个时候默认会使用container的宽高。请保证初始化LogicFlow的时候,container已经存在宽高了。
在Sandbox查看vue示例 (opens new window)
<template>
<div class="container" ref="container"></div>
</template>
<script>
import LogicFlow from "@logicflow/core";
import "@logicflow/core/dist/style/index.css";
export default {
mounted() {
this.lf = new LogicFlow({
container: this.$refs.container,
grid: true
});
this.lf.render();
},
};
</script>
<style scoped>
.container {
width: 1000px;
height: 500px;
}
</style>
在Sandbox查看react示例 (opens new window)
import LogicFlow from "@logicflow/core";
import "@logicflow/core/dist/style/index.css";
import { useEffect, useRef } from "react";
export default function App() {
const refContainer = useRef();
useEffect(() => {
const logicflow = new LogicFlow({
container: refContainer.current,
grid: true,
width: 1000,
height: 500
});
logicflow.render();
}, []);
return <div className="App" ref={refContainer}></div>;
}