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

相关推荐
云水一下6 分钟前
TypeScript 从零基础到精通(四):面向对象编程(类与继承)
javascript·typescript
shmily麻瓜小菜鸡14 分钟前
Bootstrap 4 常用工具类速查表
前端·javascript·bootstrap
CDN36016 分钟前
【架构进阶】告别配置漂移!用 NodeNext + Workspace 打造优雅的 TypeScript Monorepo
前端·javascript·typescript
超人不会飞_Jay29 分钟前
6.2前端笔记
前端·javascript·笔记
2401_868534781 小时前
常见的 vue面试题目
前端·javascript·vue.js
胡萝卜术1 小时前
从零搭建 NLP Demo:用 ES6 模块化 + DeepSeek API 构建你的第一个 AI 应用
javascript·面试
颂love1 小时前
TypeScript速学
前端·javascript·typescript
凌涘1 小时前
深入理解 JavaScript 执行机制:从执行上下文到调用栈全解析
前端·javascript
用户938515635071 小时前
从模块化到 Prompt 工程:我用 Node.js + LLM 复刻了传统 NLP 的流程
javascript·人工智能·node.js
YAwu111 小时前
手写一个符合 Promise/A+ 规范的 Promise(附完整代码)
前端·javascript