使用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?mxClient,mxGraphModel,mxActor,mxShape,mxEventObject,mxGraph,mxPrintPreview,mxEventSource,mxRectangle,mxVertexHandler,mxMouseEvent,mxGraphView,mxImage,mxGeometry,mxRubberband,mxKeyHandler,mxDragSource,mxGraphModel,mxEvent,mxUtils,mxWindow,mxEvent,mxCodec,mxCell,mxConstants,mxPoint,mxGraphHandler,mxCylinder,mxCellRenderer,mxEvent,mxUndoManager') .end(); config.resolve.alias .set('@', resolve('src')) .set('@assets', resolve('src/assets')); // 按这种格式.set('', resolve('')) 自己添加 } };
修改HelloWorld.vue,替换为以下内容。
<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的源码可以查看