如何在Vue项目中利用jsmind实现思维导图的导图模板和预设设置?

1.什么是jsmind?

jsmind 是一款基于 HTML5的思维导图工具,可以通过 js 文件的引入或 npm 的安装使用。它提供了丰富的 API 可以方便地对导图进行自定义的设置。

2.在Vue项目中集成jsmind

在 Vue 项目中集成 jsmind 主要分为以下步骤:

2.1 引入 jsmind 的样式和 js 文件

在 Vue 的入口文件 main.js 中引入 jsmind 的样式和 js 文件。在这里我们使用 npm 安装的方式。

// main.js

import 'jsmind/style/jsmind.css'

import jsMind from 'jsmind'

2.2 创建 vue 组件,初始化并渲染 mind map

首先,在 vue 组件的模板中,我们需要引入一个包含 jsmind 的容器元素。

<template>

<div class="mind-map-container">

<div id="jsmind_container" />

</div>

</template>

接下来,在 vue 组件的方法中,我们可以通过调用 jsMind 实例进行初始化和渲染 mind map。

export default {

mounted() {

// 创建 jsmind 实例

const options = {

container: 'jsmind_container',

editable: true,

theme: 'primary',

}

const jm = new jsMind(options)

// 定义初始数据

const mindData = {

"meta": {

"name": "New Mindmap",

"author": "Author",

"version": "0.2",

"expanded": true

},

"format": "node_array",

"data": [

{"id": "root", "isroot": true, "topic": "NewMindMap"}

]

}

// 加载初始数据并渲染 mind map

jm.show(mindData)

}

}

3.自定义导图的模板和预设设置

jsmind 提供了丰富的 API 可以方便地实现导图的自定义设置,例如自定义节点和关系的颜色、线条的样式、字体的大小和样式等等。

3.1 自定义节点图标和颜色

在导图中,有些节点可能是我们需要特别标注的节点,此时可以使用自定义的图标样式来作为这些节点的标志。在 jsmind 中,我们可以通过设置自定义的 iconFont 显示节点的图标,也可以通过设置节点的 foreground 和 background 属性来设置节点的颜色。以下是一个自定义节点图标和颜色的例子:

...

const nodeData = {"id": "1", "topic": "custom node", "icon": "marker", "foreground":"rgb(255,255,255)", "background":"rgb(26,188,156)"}

const childData = {"id": "2", "topic": "child node", "foreground":"rgb(200,200,200)", "background":"rgb(52,152,219)"}

const branchData = {"id": "3", "topic": "branch node", "foreground":"rgb(255,255,255)", "background":"rgb(241,196,15)"}

jm.add_node(nodeData.id, nodeData.topic, nodeData.parent, nodeData);

jm.add_node(childData.id, childData.topic, nodeData.id, childData);

jm.add_node(branchData.id, branchData.topic, nodeData.id, branchData);

...

3.2 自定义连线的样式

在默认情况下,连线的样式是一条实线。但是,我们可以通过设置修饰符来改变连线的样式,比如箭头、虚线、圆角线等等。以下是一个自定义连线样式的例子:

...

const lineData = {"id":"2", "topic":"L1", "direction":"left", "shape": "round", "line_color":"rgb(102,194,164)", "arrow":"triangle", "arrow_from":"circle", "arrow_to":"circle"}

const subLineData = {"id":"3", "topic":"L2", "direction":"left", "line_stroke":"1px dashed rgb(26 188 156)", "line_color":"rgb(26, 188, 156)", "line_alpha":"0.6"}

jm.set_link(lineData.id, lineData, lineData.parent);

jm.set_link(subLineData.id, subLineData, lineData.id);

...

3.3 自定义字体的样式

在默认情况下,导图的字体样式是拥有类似于默认字体的样式,我们可以通过样式重新定义字体样式,例如颜色、大小、粗体等等。以下是一个自定义字体样式的例子:

...

const textNodeData = {"id": "4", "topic": "modify font style", "fontsize": 16, "fontstyle":"italic", "foreground":"rgb(255,255,255)", "background":"rgb(52,152,219)"}

jm.add_node(textNodeData.id, textNodeData.topic, nodeData.id, textNodeData);

...

3.4 总结

在本文中,我们介绍了 jsmind 的基本使用以及对导图的自定义设置。上述代码可以自由组合,以满足我们在实际项目中的不同需求。

参考资料:

jsmind 官网