Vue前端页面嵌入mermaid图表--流程图

一、安装Mermaid

首先,你需要在你的项目中安装Mermaid。可以通过npm或yarn来安装:

bash 复制代码
npm install mermaid --save
# 或者
yarn add mermaid

结果如图:

二、Vue

方法一:使用pre标签

使用ref属性可以帮助你在Vue组件中访问DOM元素

html 复制代码
<template>
  <div class="screen-contanier" id="workstation">

    <pre class="mermaid" ref="mermaid">
      flowchart TD
      A[Start] --> B{Is it?}
      B -- Yes --> C[OK]
      C --> D[Rethink]
      D --> B
      B -- No ----> E[End]
    </pre>
  </div>
</template>
<script>
  import * as mermaid from 'mermaid';
</script>

直接使用div标签不起作用原因:

Mermaid未正确初始化:确保在你的Vue组件的mounted钩子中正确调用了Mermaid的初始化函数。Mermaid需要在DOM元素完全加载后才能正确初始化。
<pre>标签和<div>标签在处理文本和布局上有着本质的区别,这可能是你遇到Mermaid在<div>中不起作用的原因之一。

<pre>标签用于预格式化文本,它会保留空格和换行,使得内部的文本能够原样输出,这对于Mermaid语法尤其重要,因为它依赖于特定的格式和缩进。

然而,<div>是一个块级元素,它默认不会保留空白字符和换行。这意味着当你在<div>中输入Mermaid语法时,所有的空格和换行会被浏览器忽略,从而破坏了Mermaid语法的结构,导致Mermaid无法正确解析和渲染图表。

方法二:使用div标签

html 复制代码
<template>
  <div class="screen-contanier" id="workstation">

    <div class="mermaid" ref="mermaidGraph">
      flowchart TD
      A[Start] --> B{Is it?}
      B -- Yes --> C[OK]
      C --> D[Rethink]
      D --> B
      B -- No ----> E[End]
    </div>
  </div>
</template>
<script>
  import * as mermaid from 'mermaid';

  export default {
  name: 'MermaidExample',
  mounted() {
    mermaid.initialize({ startOnLoad: true });
    this.renderMermaid();
  },
  methods: {
    renderMermaid() {
      mermaid.init(undefined, this.$refs.mermaidGraph);
    },
  },
};
</script>

<style scoped>
  .mermaid {
  /* 确保有足够空间显示图表 */
      /* 样式 */
  height: 400px;
}
</style>

三、展示

了解mermaid

可以参考之前的文章:

markdown的mermaid用法及例子_markdown mermaid-CSDN博客

相关推荐
学不会•1 小时前
css数据不固定情况下,循环加不同背景颜色
前端·javascript·html
活宝小娜4 小时前
vue不刷新浏览器更新页面的方法
前端·javascript·vue.js
程序视点4 小时前
【Vue3新工具】Pinia.js:提升开发效率,更轻量、更高效的状态管理方案!
前端·javascript·vue.js·typescript·vue·ecmascript
coldriversnow4 小时前
在Vue中,vue document.onkeydown 无效
前端·javascript·vue.js
我开心就好o4 小时前
uniapp点左上角返回键, 重复来回跳转的问题 解决方案
前端·javascript·uni-app
开心工作室_kaic5 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
刚刚好ā5 小时前
js作用域超全介绍--全局作用域、局部作用、块级作用域
前端·javascript·vue.js·vue
沉默璇年6 小时前
react中useMemo的使用场景
前端·react.js·前端框架
yqcoder6 小时前
reactflow 中 useNodesState 模块作用
开发语言·前端·javascript
2401_882727576 小时前
BY组态-低代码web可视化组件
前端·后端·物联网·低代码·数学建模·前端框架