使用Vue-cli3生成Vue项目,并等待项目创建成功。
vue create [项目名]
安装mxgraph。
cnpm install mxgraph --save
安装exports-loader。
cnpm install exports-loader --save
安装script-loader。
cnpm install script-loader --save
在项目根目录新建vue.config.js文件。
将以下内容复制到vue.config.js文件中。
const path = require('path'); function resolve(dir) { return path.join(__dirname, dir); } module.exports = { publicPath: './', outputDir: 'dist', lintOnSave: true, chainWebpack: (config) => { config.module .rule('') .test(/mxClient\.js$/) .use('exports-loader') .loader('exports-loader"htmlcode"><template> <div ref="graph_container"></div> </template> <script> import { mxGraph } from 'mxgraph/javascript/mxClient'; export default { name: 'HelloWorld', props: { msg: String }, mounted() { // Creates the graph inside the given container var graph = new mxGraph(this.$refs.graph_container); // Gets the default parent for inserting new cells. This // is normally the first child of the root (ie. layer 0). var parent = graph.getDefaultParent(); // Adds cells to the model in a single step graph.getModel().beginUpdate(); try { let v1 = graph.insertVertex(parent, null, 'Hello,', 20, 20, 80, 30); let v2 = graph.insertVertex(parent, null, 'World!', 200, 150, 80, 30); graph.insertEdge(parent, null, '', v1, v2); } finally { // Updates the display graph.getModel().endUpdate(); } } }; </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> h3 { margin: 40px 0 0; } ul { list-style-type: none; padding: 0; } li { display: inline-block; margin: 0 10px; } a { color: #42b983; } </style>运行项目,查看效果。此Demo的源码可以查看