vue2中使用 AntV G6

1、安装

npm 安装 AntV G6

bash 复制代码
npm install @antv/g6 --save

2、安装依赖

vue2老项目与新版 AntV G6不兼容性问题,直接运行会报错,因此需安装相应依赖,原因是由于@antv/graphlib 用了ES6 + 类属性语法vue2老项目Webpack/Babel没转译这个语法。
2.1安装依赖
bash 复制代码
npm install @babel/plugin-proposal-class-properties @babel/plugin-proposal-private-methods @babel/plugin-proposal-private-property-in-object --save-dev
2.2修改babel.config.js
js 复制代码
 //babel.config.js 中 新增如下内容:
 module.exports = { 
    presets: [ '@vue/cli-plugin-babel/preset' ],
    plugins: [ 
        '@babel/plugin-proposal-class-properties',
        '@babel/plugin-proposal-private-methods',
        '@babel/plugin-proposal-private-property-in-object'
      ] 
}
 
2.3修改vue.config.js

关键!必须让 babel 转译 @antv 相关包

js 复制代码
module.exports = {
    transpileDependencies: ['@antv']
}

3、在.vue文件中引入AntV G6

vue 复制代码
    import { Graph } from '@antv/g6';

4、在.vue文件中准备一个容器

vue 复制代码
<div id="container" style="width: 500px; height: 500px"></div>

5、在.vue文件创建一个图实例,传入配置对象,并调用 render 方法渲染图,完整代码如下:

vue 复制代码
<template>
    <div>
        <div id="container" style="width: 100%; height: 100%"></div>
    </div>
</template>
<script>
import { Graph } from '@antv/g6';
export default {
    name: "antvg6",
    props: [],
    components: {},
    data() {
        return {
            graph: null,
            initData: {
                nodes: [
                    {
                        id: 'node-1',
                        style: { x: 50, y: 100 },
                    },
                    {
                        id: 'node-2',
                        style: { x: 150, y: 100 },
                    },
                ],
                edges: [{ id: 'edge-1', source: 'node-1', target: 'node-2' }],
            },
        }
    },
    mounted() {
        this.$nextTick(() => {
            this.initGraph();
        })
    },
    beforeDestroy() {
        if (this.graph) {
            this.graph.destroy();
        }
    },
    methods: {
        // 初始化图表
        initGraph() {
            this.graph = new Graph({
                container: 'container',
                autoFit: 'view',
                // 初始化图表数据
                data: this.initData,
                node: {
                    style: {
                        size: 10,
                    },
                    palette: {
                        field: 'group',
                        color: 'tableau',
                    },
                },
                layout: {
                    type: 'd3-force',
                    manyBody: {},
                    x: {},
                    y: {},
                },
                behaviors: ['drag-canvas', 'zoom-canvas', 'drag-element'],
            });
            // 渲染图表
            this.graph.render();
        }
    }
}
</script>
<style scoped>
</style>

6、npm run dev 效果图如下:

相关推荐
踩着两条虫4 小时前
目录:VTJ.PRO 在线应用开发平台技术揭秘
vue.js·低代码·ai编程
peak_chan4 小时前
通过vue-virtual-scroller封装虚拟滚动el-select
前端·javascript·vue.js
小李子呢02114 小时前
前端八股Vue(7)---computed计算属性和watch侦听器
前端·javascript·vue.js
吴声子夜歌5 小时前
ES6——对象的扩展详解
开发语言·javascript·es6
Ruihong5 小时前
Vue3 转 React:组件透传 Attributes 与 useAttrs 使用详解|VuReact 实战
vue.js·react.js
gwjcloud5 小时前
基于linux下docker部署前端vue项目
前端·javascript·vue.js
小李子呢02116 小时前
前端八股Vue(6)---v-if和v-for
前端·javascript·vue.js
程序员buddha6 小时前
ES6 迭代器与生成器
前端·javascript·es6
aq55356006 小时前
网页开发四剑客:HTML/CSS/JS/PHP全解析
javascript·css·html