Graph-Easy动画支持与MediaWiki集成:在Wiki页面嵌入动态流程图
2026/8/24 8:52:19 网站建设 项目流程

Graph-Easy动画支持与MediaWiki集成:在Wiki页面嵌入动态流程图

【免费下载链接】Graph-EasyConvert or render graphs (as ASCII, HTML, SVG or via Graphviz)项目地址: https://gitcode.com/gh_mirrors/gr/Graph-Easy

Graph-Easy是一款 Perl 图渲染引擎,能将简单的文本描述转换为 HTML、SVG、ASCII 等多种格式,并通过内置的output属性与MediaWiki深度集成,让 Wiki 页面直接展示可交互的动态流程图。本文带你快速完成从零到"在 Wiki 里画出流程图"的全过程。


📌 Graph-Easy 能做什么?

Graph-Easy 用极简语法描述图结构,例如:

[ Bonn ] -> [ Berlin ] [ Berlin ] -> [ Frankfurt ] { border: 1px dotted black; } [ Frankfurt ] -> [ Dresden ]

经过自动布局引擎处理后,可输出为HTML 表格 + CSSSVG 矢量图ASCII 字符画Graphviz DOT四种形式。其中 HTML 和 SVG 输出天然运行在浏览器中,支持 CSS 悬停、过渡、缩放等动态效果——这就是"动态流程图"的核心来源。

核心渲染逻辑位于 lib/Graph/Easy.pm,output()方法会根据图中声明的格式自动调用对应的渲染器。


🔗 MediaWiki 集成:output属性是关键

Graph-Easy 为 MediaWiki 环境预留了一个专用属性output,它在图定义中声明期望的输出格式:

graph { output: html; } [ 需求分析 ] -> [ 架构设计 ] -> [ 编码实现 ]

在 lib/Graph/Easy/Attributes.pm 中可以看到,output支持以下格式:

格式值说明适用场景
html生成 HTML 表格 + CSSWiki 页面内嵌(推荐)
svg生成 SVG 矢量图需要无损缩放时
ascii字符画终端 / 纯文本
graphvizDOT 格式交给dot二次渲染
boxart增强字符画终端美化
debug调试信息开发排错

MediaWiki 端的mediawiki-graph扩展在解析模板时,会读取该属性并调用Graph::Easy::output(),将结果直接插入页面——无需手动导出图片


🚀 三步在 Wiki 中嵌入动态流程图

第 1 步:安装 Graph-Easy

git clone https://gitcode.com/gh_mirrors/gr/Graph-Easy cd Graph-Easy perl Makefile.PL && make && make install

第 2 步:编写图文本

创建一个.txt文件,使用 Graph-Easy 文本语法:

graph { label: 部署流水线; output: html; node { shape: rounded; } edge { arrowstyle: filled; } } [ 代码提交 ] --> { border: 1px solid #4CAF50; } [ CI 构建 ] [ CI 构建 ] --> [ 自动化测试 ] [ 自动化测试 ] --> [ 部署到生产 ]

第 3 步:渲染并嵌入 Wiki

方式 A:命令行直接生成 HTML 片段

perl -Ilib examples/as_html my_graph.txt

将输出的 HTML 代码粘贴到 Wiki 页面的<pre>或源码模式即可。完整示例可参考 examples/as_html 脚本。

方式 B:通过 MediaWiki 模板(推荐)

在 Wiki 页面中使用模板调用:

{{#invoke:graph-easy|render| [ 代码提交 ] --> [ CI 构建 ] [ CI 构建 ] --> [ 部署到生产 ] }}

模板内部调用Graph::Easy::Parser解析文本,再经output()方法按output属性渲染。解析器实现在 lib/Graph/Easy/Parser.pm。


🎨 让流程图"动"起来:CSS 与 SVG 技巧

HTML 输出本质是<table>+<style>组合,你可以在此基础上追加 CSS 动画:

table.graph td { transition: background-color 0.3s, transform 0.2s; } table.graph td:hover { background-color: #e3f2fd; transform: scale(1.05); }

SVG 输出则支持<animate><animateTransform>等原生 SMIL 动画标签,可实现箭头流动、节点脉冲等效果。SVG 渲染器位于 lib/Graph/Easy/As_graphviz.pm(经 Graphviz 后端)或直接通过as_svg方法生成。

💡提示examples/as_svg演示了完整的 SVG 输出流程,可作为动画改造的起点。


🕷️ 进阶:用 wikicrawl 从 Wiki 自动生成关系图

项目附带了一个极具创意的示例脚本 examples/wikicrawl.pl,它能:

  1. 抓取指定 Wikipedia 页面及其链接
  2. 将"文章 → 被链接文章"关系转化为 Graph-Easy 图
  3. 按链接深度着色(越深层颜色越暖)
  4. 输出.txt图描述 +.png渲染结果
perl examples/wikicrawl.pl --lang=de --root=Berlin --maxdepth=3

这展示了 Graph-Easy 在"从 Wiki 提取图 → 渲染回 Wiki"闭环中的完整能力。


📁 关键文件速查

文件作用
lib/Graph/Easy.pm核心模块,output()总入口
lib/Graph/Easy/Attributes.pmoutput属性定义与文档
lib/Graph/Easy/Parser.pm文本语法解析器
examples/as_htmlHTML 输出示例脚本
examples/as_svgSVG 输出示例脚本
examples/wikicrawl.plWiki 爬取生成图
examples/html.pl完整 HTML 页面生成示例
README项目总览与安装说明

✅ 常见问题

Q:Wiki 页面里 HTML 被过滤了怎么办?A:MediaWiki 默认会转义<table>等标签。需在LocalSettings.php中注册mediawiki-graph扩展,或在模板层通过wfLoadExtension允许内联 HTML。

Q:节点太多导致布局缓慢?A:在graph {}中设置timeout: 120;限制布局时间,或减少边数量。布局引擎在 lib/Graph/Easy/Layout/ 下提供 Grid、Force、Path 等多种策略可选。

Q:能否输出 Boxart 风格的字符动画?A:可以。output: boxart;生成带 Unicode 框线字符的增强 ASCII 图,配合 Wiki 的<pre>标签展示,适合纯文本环境。


Graph-Easy 让"画流程图"这件事从打开绘图软件退化为写一行文本。而output属性 + MediaWiki 模板的组合,则让这份文本直接在 Wiki 页面中"活"起来——无需图片文件,无需额外依赖,一条命令,一个模板,流程图就嵌好了。

【免费下载链接】Graph-EasyConvert or render graphs (as ASCII, HTML, SVG or via Graphviz)项目地址: https://gitcode.com/gh_mirrors/gr/Graph-Easy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询