【GoJS使用】GoJS在vue中的入门使用教程】

文章目录

前言

此使用教程的内容只是个人制作产品时,根据需要实现功能进行文档记录,需要完整的使用文档需要自行去官方文档查看。

注意:本文档适用于开发类似思维导图的功能,需要其他样式可以查看官方文档的例子。


安装和引入Go.js

先安装

npm I gojs –save

然后组件按需引入或全局main.js引入,看自己需求。

使用时要在html中用个dom容器来渲染图像

<div id="chart-wrap">
      <div id="chart-diagram"></div>
</div>

JS导入

// 在export之前
import go from 'gojs'
const MAKE = go.GraphObject.make; // 声明个全局的常量MAKE,用来“创造”所需图像配置   声明一个比较简约的模板

画板初始化

Vue中建议把初始化过程写在一个方法里,初始化内容为

init() {
   
   
    var mySelf = this // 声明个Vue的指向

    mySelf.myDiagram = MAKE(go.Diagram, 'chart-diagram', {
   
    // 创建画板并挂在Vue上(注意dom的id名称要对应)

        //这里写画板配置

    })
}

画板配置

基础配置

initialContentAlignment: go.Spot.Center, // 居中显示
isReadOnly: true, // 只读,无法编辑操作
allowMove: true, // 允许拖动画板
allowDragOut:true, // 允许拖拽节点
allowDelete: true, // 允许删除节点
allowCopy: true, // 允许复制节点
allowClipboard: true, // 允许粘贴节点
scale: 1.0, // 初始视图大小比例
minScale: 0.5, // 最小视图的缩小比例
maxScale: 1.5, // 最大视图的放大比例
scrollMargin: 500, // 默认下拖拽画布的时候边界是已最外的节点为边距,这个就是增加边距的,类似padding设置
fixedBounds: , //设置图表边界
    
'undoManager.isEnabled': true, // 支持 Ctrl-Z 和 Ctrl-Y 操作 (撤回和复原)
'toolManager.hoverDelay': 100, // tooltip提示显示延时
'toolManager.toolTipDuration': 10000, // tooltip持续显示时间
'grid.visible': true, // 显示网格
'toolManager.mouseWheelBehavior': go.ToolManager.WheelZoom, // 有鼠标滚轮事件放大和缩小,而不是向上和向下滚动
'clickCreatingTool.archetypeNodeData': {
   
    category: 'Normal', text: '新节点', notice: ''}, // 双击新建节点(可以写入节点的默认信息);

树结构配置

mySelf.myDiagram.layout = MAKE(go.TreeLayout, {
   
    // 树结构
   angle: 0, //树结构的方向
   layerSpacing: 35, //节点之间的距离
   isOngoing: false, // 是否开启自动布局
   isTreeExpanded:false // 是否展开子节点
})

连接线的配置

mySelf.myDiagram.linkTemplate =
    MAKE(go.Link,
         {
   
    
            routing: go.Link.Orthogonal, // 线会自动90度转弯(AvoidsNodes自动绕开节点)
            curve: go.Link.JumpGap, // 线与线相交会自动不重叠(还有go.Link.Bezier贝塞尔曲线)
            corner: 3 // 拐角弧度
            toEndSegmentLength: 30, //目的点线的固定距离(如果设置了自动拐角就是最短距离)
            fromEndSegmentLength: 30, //出发点线的固定距离(如果设置了自动拐角就是最短距离)
            fromShortLength, //设置线的出发点到端口的距离
            toShortLength, //设置线的结束点到端口的距离
            zOrder: -111, //图像层级
            selectable: false, //连接线是否可选
            fromSpot: go.Spot.LeftRightSides, //连线出发点强制为(new go.Spot(0.5, 0.5, 0, -25)为自定义)
            toSpot: go.Spot.LeftRightSides, //连线目的点强制为
            reshapable: true, 
            resegmentable: true,
            relinkableFrom: true,  //出发点是否可以改变
            relinkableTo: true,  //目标点是否可改变 
            adjusting: go.Link.Stretch,
            fromMaxLinks: 1,  //限制一个连接点的连接次数
            toMaxLinks: 1,  //限制一个连接点的连接次数
		},
         
         // 如果link数据有fromSpot,toSpot属性则可绑定
         new go.Binding("fromSpot", "fromSpot", go.Spot.parse),
         new go.Binding("toSpot", "toSpot", go.Spot.parse),
      
         MAKE(go.Shape, {
   
   
          strokeWidth:
### GoJS 基本用法入门教程 #### 一、GoJS 的简介 GoJS 是一种用于构建复杂交互式图表的应用程序框架。它提供了丰富的功能来实现动态图形界面开发,支持多种数据可视化场景。 以下是基于 Vue.js 使用 GoJS 的基本流程以及一些核心概念: --- #### 二、引入 GoJS 并声明全局变量 为了在项目中使用 GoJS,首先需要将其导入到文件中,并定义一个全局常量 `MAKE` 来简化对象的创建过程[^1]。 ```javascript import go from 'gojs'; const MAKE = go.GraphObject.make; ``` 此方法可以少重复代码并提高可读性。 --- #### 三、初始化画布 通过实例化 `Diagram` 类来创建绘图区域,并为其指定容器 ID 和初始配置参数。 ```javascript let myDiagram = MAKE(go.Diagram, "myDiagramDiv", { initialContentAlignment: go.Spot.Center, allowDrop: true, layout: MAKE(go.LayeredDigraphLayout), }); ``` 上述代码片段展示了如何设置中心对齐布局 (`initialContentAlignment`) 及启用拖放操作 (`allowDrop`)。 --- #### 四、定义节点模型 (Node Data Array) 利用 `GraphLinksModel` 定义节点及其连接关系的数据结构[^3]。下面是一个简单的例子: ```javascript var model = MAKE(go.GraphLinksModel); model.nodeDataArray = [ { key: "A", text: "起点" }, { key: "B", text: "中间点" }, { key: "C", text: "终点" } ]; model.linkDataArray = [ { from: "A", to: "B" }, { from: "B", to: "C" } ]; myDiagram.model = model; ``` 这里设置了三个节点 A、B 和 C,并指定了它们之间的一条路径链路。 --- #### 五、自定义工具提示框 如果希望强用户体验,则可以通过 HTML 元素配合 JavaScript 方法来自定义鼠标悬停显示的信息窗口[^4]。 HTML 部分如下所示: ```html <div id="toolTipDIV" style="position: absolute; background: white; border: 2px solid #666666; z-index: 1000; display: none;"> <p id="toolTipParagraph">备注信息</p> </div> ``` 接着,在脚本部分关联该 DOM 对象至特定事件处理器上: ```javascript let toolTipHtmlInfo = MAKE(go.HTMLInfo, { show: function(obj) { document.getElementById('toolTipDIV').style.display = ''; document.getElementById('toolTipParagraph').innerText = obj.part.data.text || ''; }, hide: function() { document.getElementById('toolTipDIV').style.display = 'none'; } }); // 将其附加给目标组件... ``` 以上实现了当用户移动光标经过某个元素时弹出描述文字的功能。 --- #### 六、绑定事件监听器 最后一步就是注册必要的回调函数以便响应用户的动作触发相应的逻辑处理[^2]。例如点击某节点后打印日志消息: ```javascript myDiagram.addDiagramListener("SelectionChanged", () => { console.log(myDiagram.selection.first().data.key); }); ``` 这样就完成了整个工作流的设计! --- ### 总结 本文介绍了关于 GoJS 初学者指南的内容,涵盖了从环境搭建到最后实际案例演示等多个方面知识点。读者可以根据自己的需求灵活调整各项属性值从而满足个性化定制要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值