解析HTML流程图,JointJS JavaScript流程图绘制框架解析

JointJS:JavaScript 流程图绘制框架

最近调研了js画流程图的框架,最后选择了Joint。配合上 dagre 可以画出像模像样的流程图。

JointJS 简介

JointJS 是一个开源前端框架,支持绘制各种各样的流程图、工作流图等。Rappid 是 Joint 的商业版,提供了一些更强的插件。JointJS 的特点有下面几条,摘自官网:

能够实时地渲染上百(或者上千)个元素和连接

支持多种形状(矩形、圆、文本、图像、路径等)

高度事件驱动,用户可自定义任何发生在 paper 下的事件响应

元素间连接简单

可定制的连接和关系图

连接平滑(基于贝塞尔插值 bezier interpolation)& 智能路径选择

基于 SVG 的可定制、可编程的图形渲染

NodeJS 支持

通过 JSON 进行序列化和反序列化

总之 JoingJS 是一款很强的流程图制作框架,开源版本已经足够日常使用了。

一些常用地址:

JointJS Hello world

var graph = new joint.dia.Graph;

var paper = new joint.dia.Paper({

el: document.getElementById('myholder'),

model: graph,

width: 600,

height: 100,

gridSize: 1

});

var rect = new joint.shapes.standard.Rectangle();

rect.position(100, 30);

rect.resize(100, 40);

rect.attr({

body: {

fill: 'blue'

},

label: {

text: 'Hello',

fill: 'white'

}

});

rect.addTo(graph);

var rect2 = rect.clone();

rect2.translate(300, 0);

rect2.attr('label/text', 'World!');

rect2.addTo(graph);

var link = new joint.shapes.standard.Link();

link.source(rect);

link.target(rect2);

link.addTo(graph);

hello world 代码没什么好说的。要注意这里的图形并没有自动排版,而是通过移动第二个 rect 实现的手动排版。

d77418ff72ffc96e599a6d9e2ee3c989.png

前后端分离架构

既然支持 NodeJs,那就可以把繁重的图形绘制任务交给服务器,再通过 JSON 序列化在 HTTP 上传输对象,这样减轻客户端的压力。

NodeJS 后端

var express = require('express');

var joint = require('jointjs');

var app = express();

function get_graph(){

var graph = new joint.dia.Graph();

var rect = new joint.shapes.standard.Rectangle();

rect.position(100, 30);

rect.resize(100, 40);

rect.attr({

body: {

fill: 'blue'

},

label: {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值