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 效果图如下:

相关推荐
独泪了无痕1 天前
viewer.js 安装与配置指南:实现图片预览功能
前端·vue.js
起床学FPGA1 天前
AI回答问题之后,会自动跳到最下面的问题
开发语言·javascript·ecmascript
默_笙1 天前
❗ 点击计数按钮,为什么"峨眉队"也跟着重新渲染?React.memo 说:我记住了
前端·javascript
名字还没想好☜1 天前
Next.js 用 Server Components 直连数据库:去掉 API 层的边界,和三条别踩的安全红线
前端·javascript·数据库·安全·react·next.js
Brown.alexis1 天前
es6知识点5-自备使用
前端·javascript·es6
杨利杰YJlio1 天前
KB5121003更新详解:安全启动证书、AI组件、资源管理器与安装验证
前端·javascript·后端
lemon_yyds1 天前
uVIew2 弹框滚动穿透问题-[uu-popup ]组件
vue.js
3秒一个大1 天前
JS 数组去重全方案:从基础到通用万能去重函数
前端·javascript
晴天161 天前
Electron面试题-Day19
java·javascript·electron
Hilaku1 天前
为什么跳槽涨薪 30% 的时代彻底结束了?聊聊 2026 前端薪资的天花板
前端·javascript·程序员