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

相关推荐
qq_589666053 小时前
TypeScript 完整入门教程
前端·javascript·typescript
星栈独行4 小时前
翻完 Pi 源码:它和 Codex、Claude Code 有何不同
开发语言·javascript·人工智能·程序人生
落落Plus5 小时前
浏览器缓存机制详解
javascript·缓存·浏览器缓存
浅水壁虎8 小时前
vue基础(第二章 )
前端·javascript·vue.js
界面开发小八哥8 小时前
界面控件DevExtreme v26.1新版亮点——支持Angular 22
前端·javascript·angular.js·devexpress·ui开发·devextreme
mONESY9 小时前
React useState 核心原理与最佳实践:从异步更新到性能优化全解
javascript
腻害兔9 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:CRM 客户关系模块深度解析——从线索到回款,一套完整的 B2B 销售闭环是怎么搭的?
java·前端·javascript·vue.js·产品经理·ai编程
gis开发之家10 小时前
《Vue3 从入门到大神37篇》Vue3 源码详解(七):watch 与 watchEffect 源码对比——副作用是如何被追踪的?
javascript·前端框架·vue3·vue3源码
bloglin9999911 小时前
langchain 和 langgraph 和 react
javascript·react.js·langchain
触底反弹11 小时前
🚀 删了数据刷新又回来?3 组件 × 4 回调 × 3 坑讲透 React 父子通信
前端·javascript·react.js