流程图绘制工具 Draw.io -初步分析及搭建

5 篇文章 1 订阅
1 篇文章 0 订阅

Draw.io 是 GitHub 上一个开源的流程图绘制工具,功能丰富,而且免费。

快捷键

参考

相关链接:

在线网页版,直接访问:https://www.draw.io/

桌面版下载地址:https://github.com/jgraph/drawio-desktop/releases

网页版github:https://github.com/jgraph/drawio

国内gitee镜像:https://gitee.com/mirrors/drawio

个人通过gitee pages搭建的静态页面:https://winsonzhao.gitee.io/drawio/src/main/webapp/index.html

通过分析提取版本-未完:https://winsonzhao.gitee.io/drawdev/

参考的链接:

流程图绘制工具 Draw.io 离线版部署教程 | 张振伟的技术博客

drawio持续改造过程记录_Java_PiaoMiaoXiaodao的博客-CSDN博客

下载和部署可以参考以上链接。

部署方式

当前的构建方式:(支持类型较多)

可以将其网页版自己部署一套离线版,分析得知,网页版默认使用的是压缩的脚本,不利于分析,使用dev版本调试还需要梳理。

模式

使用开发模式,链接如下:

https://www.draw.io/?dev=1

结果页面就变成如下了:

页面内容,是自己做了汉化提示

<div class="geBlock" style="text-align:center;min-width:50%;">
    <h1>Flowchart Maker and Online Diagram Software</h1>
	<p>
	    diagrams.net (formerly draw.io) is free online diagram software. You can use it as a flowchart maker, network diagram software, to create UML online, as an ER diagram tool, 
            to design database schema, to build BPMN online, as a circuit diagram maker, and more. draw.io can import .vsdx, Gliffy&trade; and Lucidchart&trade; files .
	</p>
	<p>
	    diagrams.net(以前叫draw.io)是免费的在线图表软件。你可以把它作为流程图制作工具,网络图软件,在线创建UML,作为一个ER图工具,
	    设计数据库模式,在线构建BPMN,作为电路图生成器,等等。draw.io可以导入.vsdx、Gliffy&amp;trade;和Lucidchart&amp;trade;文件。
        </p>
	<h2 id="geStatus">Loading(加载)...</h2>
	<p>
	    Please ensure JavaScript is enabled.(请确保启用了JavaScript。)
	</p>
</div>

其实,在参考的内容已经提示了,是页面脚本处理问题。需要修改链接路径。待补充d=====( ̄▽ ̄*)b

汉化

在看源码的时候,发现官方的汉化包,不是全部汉化:

在fork的代码中,找到 dia_zh.txt  ,使用百度翻译操作一番:

默认语言

通过在 index.html 中插入代码,设置默认语言和离线模式

urlParams['lang'] = 'zh';//修改默认语言为中文
urlParams['offline'] = 1;//修改为离线模式

根据下图的代码得知

关于导出

编辑一个新示例

使用导出功能,导出两种文件xml和html:

<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="winsonzhao.gitee.io" modified="2020-03-27T06:27:21.518Z" 
agent="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36" 
etag="BpHjZIye2gDW-1UIv-PG" version="12.9.3">
<diagram id="QUYk8n2M0uGZwHH8mf06" 
name="第 1 页">
tVZdk5owFP01eeyOfIjwKKxup93OdsZO+7gTSYS0gUvDVbG/vkGCiLi6O6OOD8nJDbk553CUOFFWPSlapN+AcUnsEauI80hs23Jtm9TfEds1yMT1GiBRgpmiDliIf9yAI4OuBeNlrxABJIqiD8aQ5zzGHkaVgm2/bAWyf2pBEz4AFjGVQ/SXYJg2qG9POvwzF0nanmx5QbOS0bbY3KRMKYPtEeTMiBMpAGxGWRVxWZPX8tLsm7+xemhM8Rzfs+GFheNl+PPLMgi++hvnxwtjfz+Zp2yoXJsLk5lHwjHxQzLzyXROgrFpH3ctJwrWOeP1Y0fECbepQL4oaFyvbrULNJZiJvXM0sMSFfzhEUhQ+93OfG4Frm4yXAkpj3ANzh/dGoccj/CR/gSBxk2rXCGv3uTAOjCrLckh46h2uqTd0NrKuNEemfm209ZqBUuPdPUMRo2dksOjO8b1wJD+AQGcoQCndHOmHWmmoDCFBHIqZx0a9gXpap4BCiPDb464M68XXSP0RWrOrA+6TKzuC9Yq5hcuZPpHqhKO15w3FEpxSVFs+n3cnHX7OutXbE3Loomblahq5m/iTq/vTscdutM/Y07/XuZ0r9NUX1jouHymSy6/QylQQK6XloAImealLZhKkdQLCKcB0eZi7V1Gy/Rg5CY62tg1tUV9cFYl9c/NA82ZAsEedPojjfF1SbWFXwvFy/JmovgnonhDUdwzorj3EmV8NrIDj/iT/SAi02ggk74/XsrlHHJ+EskGoka3WPPF1RlBM8HYPoXOvTH9ZLpjsh/4NjJZwftksj8uk552v9r7taP/Ps7sPw==
</diagram></mxfile>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]-->
<!DOCTYPE html>
<html>
<head>
<title>未命名绘图01</title>
<meta charset="utf-8"/>
</head>
<body>
<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" 
data-mxgraph="{&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;resize&quot;:true,&quot;toolbar&quot;:&quot;zoom layers lightbox&quot;,&quot;edit&quot;:&quot;_blank&quot;,&quot;xml&quot;:&quot;&lt;mxfile host=\&quot;winsonzhao.gitee.io\&quot; modified=\&quot;2020-03-27T08:40:06.968Z\&quot; agent=\&quot;Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36\&quot; etag=\&quot;C22Vx2iKDcHtKdSspYj_\&quot; version=\&quot;12.9.3\&quot;&gt;&lt;diagram id=\&quot;QUYk8n2M0uGZwHH8mf06\&quot; name=\&quot;第 1 页\&quot;&gt;tVZdk5owFP01eeyOfIjwKKxup93OdsZO+7gTSYS0gUvDVbG/vkGCiLi6O6OOD8nJDUnOOTlAnCirnhQt0m/AuCT2iFXEeSS2bbm2Ter/iO0aZOJ6DZAowUxRByzEP27AkUHXgvGyV4gAEkXRB2PIcx5jD6NKwbZftgLZX7WgCR8Ai5jKIfpLMEwb1LcnHf6ZiyRtV7a8oBnJaFtsTlKmlMH2CHJmxIkUADatrIq4rMlreWnmzd8YPWxM8RzfM+GFheNl+PPLMgi++hvnxwtjfz8ZMTZUrs2Bycwj4Zj4IZn5ZDonwdhsH3ctJwrWOeP1Y0fECbepQL4oaFyPbrULNJZiJnXP0s0SFfzhEUhQ+9nOfG4Frt5kuBJSHuEanD+6NQ45HuEj/QsCjZutcoW8epMD68CstiSHjKPa6ZJ2Qmsr40Z7ZPrbTlurFSw90tUzGDV2Sg6P7hjXDUP6BwSYDAU4pZsz7UjTBYUpJJBTOevQsC9IV/MMUBgZfnPEnbledI3QF6lZs17oMrF6X7BWMb9wIN9cUqoSjtecNxRKcUlRbPr7uDnr/nXWr9ialkUTNytR1czfxJ1e352OO3Snf8ac/r3MGVynqT6w0HH5TJdcfodSoIBcDy0BETLNS1swlSKpBxBOA6LNxdq7jJbpwchNdLSxa2qLeuGsSurXzQPNmQLBHnT6I43xdUm1hV8LxcvyZqL4J6J4Q1HcM6K49xKljbCTzA484k/2jYhMo4FOmgC8FMw55Pwkkw1EjXCxJoyrM4pmgrF9DJ27Mv1oumO0Hwg3OlnB+3SyP66T7nav7f3Y0cePM/sP&lt;/diagram&gt;&lt;/mxfile&gt;&quot;}">
</div>
<script type="text/javascript" src="https://app.diagrams.net/js/viewer.min.js"></script>
</body>
</html>

html的data-mxgraph的内容是被处理过的,处理代码如下

//view.min.js EditorUi.js
'" data-mxgraph="' + mxUtils.htmlEntities(JSON.stringify(d)) + '"></div>'

//mxClient.js
htmlEntities: function(s, newline){
    s = String(s || '');
    s = s.replace(/&/g,'&amp;'); // 38 26
    s = s.replace(/"/g,'&quot;'); // 34 22
    s = s.replace(/\'/g,'&#39;'); // 39 27
    s = s.replace(/</g,'&lt;'); // 60 3C
    s = s.replace(/>/g,'&gt;'); // 62 3E
    if (newline == null || newline){
	s = s.replace(/\n/g, '&#xa;');
    }
    return s;
}

真正与图有关系的代码,只是如下的字符串:

tVZdk5owFP01eeyOfIjwKKxup93OdsZO+7gTSYS0gUvDVbG/vkGCiLi6O6OOD8nJDUnOOTlAnCirnhQt0m/AuCT2iFXEeSS2bbm2Ter/iO0aZOJ6DZAowUxRByzEP27AkUHXgvGyV4gAEkXRB2PIcx5jD6NKwbZftgLZX7WgCR8Ai5jKIfpLMEwb1LcnHf6ZiyRtV7a8oBnJaFtsTlKmlMH2CHJmxIkUADatrIq4rMlreWnmzd8YPWxM8RzfM+GFheNl+PPLMgi++hvnxwtjfz8ZMTZUrs2Bycwj4Zj4IZn5ZDonwdhsH3ctJwrWOeP1Y0fECbepQL4oaFyPbrULNJZiJnXP0s0SFfzhEUhQ+9nOfG4Frt5kuBJSHuEanD+6NQ45HuEj/QsCjZutcoW8epMD68CstiSHjKPa6ZJ2Qmsr40Z7ZPrbTlurFSw90tUzGDV2Sg6P7hjXDUP6BwSYDAU4pZsz7UjTBYUpJJBTOevQsC9IV/MMUBgZfnPEnbledI3QF6lZs17oMrF6X7BWMb9wIN9cUqoSjtecNxRKcUlRbPr7uDnr/nXWr9ialkUTNytR1czfxJ1e352OO3Snf8ac/r3MGVynqT6w0HH5TJdcfodSoIBcDy0BETLNS1swlSKpBxBOA6LNxdq7jJbpwchNdLSxa2qLeuGsSurXzQPNmQLBHnT6I43xdUm1hV8LxcvyZqL4J6J4Q1HcM6K49xKljbCTzA484k/2jYhMo4FOmgC8FMw55Pwkkw1EjXCxJoyrM4pmgrF9DJ27Mv1oumO0Hwg3OlnB+3SyP66T7nav7f3Y0cePM/sP

而且,drawio通过浏览器的内置数据库indexedDB,如图

key是文件名,value是对象,data的内容和xml内容一致。

§(* ̄▽ ̄*)§

其他待续……

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值