gojs(一)

article/2025/9/15 18:04:25

前言

什么是 GoJs

GoJs 是一个 JavaScripttypescript 库,用于构建交互式图表,可以轻易的实现日常开发中所需要的各种示意图、结构图、组织图、流程图、状态图、思维导图、树状图等。

它用自定义模板和布局组件简化了节点、链接和分组等复杂的 JS 图表,给用户交互提供了许多先进的功能,如拖拽、复制、粘贴、文本编辑、工具提示、上下文菜单、自动布局、模板、数据绑定和模型、事务状态和撤销管理、调色板、概述、事件处理程序、命令和自定义操作的扩展工具系统。

无需切换服务器和插件,GoJS 就能实现用户互动并在浏览器中完全运行,呈现 HTML5 Canvas 元素或 SVG,也不用服务器端请求。

安装

npm i gojs -S 

去水印

GoJs 是一个商业软件,所以我们通过 NPM 安装的模块,如果没有支付费用的话,默认会带有水印。

image.png

方法仅供学习,请支持正版软件

我们可以通过修改源码的方式去除水印。

  • 首先找到这个文件 node_modules\gojs\release\go.js
  • 然后在文件中搜索 7eba17a4ca3b1a8346
  • 找到类似于 a.kv=d[w.Jg(“7eba17a4ca3b1a8346”) **][w.Jg(“78a118b7”)]****(d,w.um,4,4) 这样的一句代码
  • 将此条语句替换成 a.Jv=function(){return true}; 保存即可

最终如果呈现以下效果,则说明去除水印成功。

image.png

使用

GoJS 不依赖于任何 JS 库或框架(例如 bootstrapjquery 等),可与任何 HTMLJS 框架配合工作。本文基于 vue2.x 作为基础前端框架。

初始化

GoJs 需要提供一个节点作为容器,并且图形的容器 div 需要明确指定大小(支持固定值以及百分比),否则无法显示,容器支持部分 CSS 样式,比如背景颜色,边框等,这个容器可以理解为画布。

<template><!-- 图形的容器 div 需要明确指定大小,否则无法显示 --><div id="diagram" style="width:50%; height:50%; background-color: #DAE4E4;"></div>
</template> 

因为全局都会用到 go.GraphObject.make 这个方法,所以我们在导入以后直接声明一个全局变量,这个变量可以理解为画笔。

import go from 'gojs'
// 获取 gojs 的方法
const $ = go.GraphObject.make; 

接下来进行 GoJs 的初始化部分。这个是官网的例子,先不用知道每一行代码的作用,我们先把程序跑起来,页面画出来。

// 初始化gojs
initGoJs() {// 将 gojs 挂载到 div 上 ,canvas 的大小由 div 的宽高决定this.diagram =$(go.Diagram, "diagram",{"undoManager.isEnabled": true});const myModel = $(go.Model);myModel.nodeDataArray = [{ key: "Alpha" },{ key: "Beta" },{ key: "Gamma" }];this.diagram.model = myModel;
} 

以上简单的代码呈现出下面的结果。

image.png

其可以实现的功能如下

  • 点击空白并按住鼠标左键,可以通过平移整个图表
  • 点击节点可以选中某个节点,选中的节点高亮显示
  • 使用 Ctrl+A 可以选中所有元素
  • 按住 ctrl 键,点击鼠标左键可以选择多个元素
  • 选中节点并按住鼠标左键,可以移动特定节点
  • 点击空白并按住鼠标左键,点击后等 1s 再滑动鼠标,可以画出一个选择框,选中多个节点
  • 选中节点后,使用 ctrl+cctrl+v 的方式可以复制节点
  • 选中节点后,使用 delete 按钮可以删除节点
  • 按住 ctrl 键,滑动鼠标滚轮(或者 + - 号)可以进行整个图表的缩放,ctrl + 0 恢复初始大小
  • 使用 ctrl+zctrl+y 可以进行撤回和重做操作(由代码中的 "undoManager.isEnabled": true 控制)

可以看到,当前代码量只有几行,在一个代码量比较少的情况可以完成这么多功能,可以看出 GoJs 本身已经将大部分交互的动作内置到框架本身,只需要通过设置相应的属性即可完成。


http://chatgpt.dhexx.cn/article/9ayL4IgH.shtml

相关文章

Java 不赚钱,要转 Go 吗?

发现一个 2021 年报告&#xff0c;显示 Go 是最想学习的编程语言 Go 到如今的火爆程度&#xff0c;不仅仅是因为有个好爹。上手快&#xff0c;一周就能入门上手&#xff0c;正常人写的 Go 都不会太差。有人说&#xff0c;它有一种迷人的气质&#xff0c;很难用语言表达&#xf…

Djago(18)

9. session会话 因为因特网HTTP协议的特性&#xff0c;每一次来自于用户浏览器的请求&#xff08;request&#xff09;都是无状态的、独立的。通俗地说&#xff0c;就是无法保存用户状态&#xff0c;后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户。对于静态…

java 自动转 golang_JAVA转Golang

GO语言因其并行机制出现在大众的视野中&#xff0c;Go编译到机器码非常的快速&#xff0c;它是快速的、静态类型编译语言&#xff0c;但是感觉上是动态类型&#xff0c;解释型语言&#xff0c;要说响应式编程应该reactive&#xff0c;webflux&#xff0c;RXJava&#xff0c;net…

Go Go Go!

一、概述 本文为Go语言学习入门第一篇&#xff0c;《Go语言入门》如何在Windows下安装Go语言编程环境 。主要讲Go语言编译环境的安装以及基于Notepad&#xff08;Go语言插件、语法高亮&#xff09;的开发环境配置。 先鼓吹一下Go语言&#xff1a; GO是强类型语言&#xff0c…

idea String报错问题

一、下载问题 1.版本安装错误&#xff1b; 二、问题解决 1.彻底删除下载错误的idea &#xff08;1&#xff09;. 注册表清理 windows R 输入 regedit 打开注册表 点击一级菜单 HKEY_CURRENT_USER&#xff0c; 右键查找&#xff0c;输入idea&#xff0c;会找到jetbrains&…

Navicat 连接 mysql 报错

当我们用Navicat 连接数据库的时候&#xff0c;可能会遇到这个问题 &#xff1a; 这个问题主要是因为 5 和 8 的加密方式不一样&#xff0c;才导致报错&#xff01; 解决方法 1、进入mysql的安装目录下的 bin 目录 2、mysql -h localhost -P3306 -uroot -p 3、执行 alter user…

安装tensorflow报错

安装tensorflow 使用管理员身份运行cmd 然后根据你的python版本安装对应的tensorflow &#xff08;查看Python版本&#xff1a;python --version&#xff09; pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu2.3.0如果上面的遇到403错误&#xff0…

yum makecache 报错

使用yum的时候总是提示The requested URL returned error: 404这个错误&#xff0c;经过一番折腾总算解决了。 首先说下yum源&#xff0c;使用的是163的源。http://mirrors.163.com/.help/CentOS7-Base-163.repo [base] nameCentOS-$releasever - Base - 163.com baseurlhtt…

ADS报错整理

ADS报错整理&#xff1a; 软件版本为&#xff1a;ADS2017 报错1&#xff1a;A virtual resistance of 1 TOhms was added between each node and ground, and a virtual resistance of 1 pOhms was inserted in each current branch, and a virtual resistance of 1 pOhms was…

Navicat连接MySQL数据库报错1045

数据库创建后直接使用navicat工具进行连接报错1045 在保证你输入的账号密码都正确的情况下&#xff1b; 可能是因为你的正好没有权限 权限不够&#xff0c;因为MySQL默认数据库创建的账号权限仅限于localhost 需要进行授权 grant all privileges on *.* to username% identif…

前端报错404

情况一&#xff1a; 错误截图&#xff1a; 错误原因&#xff1a;前端页面链接部分忘写了一个斜杠。 修改方法&#xff1a;加上斜杠 情况二&#xff1a; 错误截图&#xff1a; 错误原因&#xff1a;访问public文件夹时加上public&#xff0c;加了会导致资源无法找到。

安装weditor报错

weditor是app的定位工具&#xff0c;安装weditor报错如下&#xff1a; 跟着提示要更新一下pip c:\users\acer\appdata\local\programs\python\python38-32\python.exe -m pip install --upgrade pip Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple更新pip之后…

【web安全】——报错注入

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a; 主页传送门 创作初心&#xff1a; 一切为了她 座右铭&#xff1a; 不要让时代的悲哀成为你的悲哀 专研方向&#xff1a; web安全&#xff0c;后渗透技术 每日emo&#xff1a; 内心的爱意逐渐被时间冲淡 今天给大家讲…

SpringBoot打包报错

一、对springBoot打包 package 报错的情况 处理方法&#xff1a;对文件目录下的pom.xml文件进行修改 ① 修改编码 配置编码格式为 UTF-8 具体的操作就是在pom.xml文件中的<properties></properties>标签下增加一行配置编码格式的代码&#xff1a; <propertie…

pip list 报错

使用到的具体命令&#xff1a; 1、python -m ensurepip 2、python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple 项目场景&#xff1a; pip list 报错 问题描述 报错如上图所示 原因分析&#xff1a; pip 更新时关闭窗口、断网、没有使用国…

pnpm报错问题

在使用模板练习项目的时候遇到了一个问题&#xff0c;只要打开编辑器进入项目就会疯狂报错&#xff0c;每一个页面都有报错。这次的方向就是解决这个问题。 首先&#xff0c;打开编辑器,这里我使用的是vscode&#xff0c;winj打开编辑器命令行&#xff0c;输入npm i npm i 缓存…

报错注入详解

报错注入 报错注入是SQL注入的一种。 利用前提:页面上没有显示位,但是需要输出SQL语句执行错误信息。比如mysql_error() 优点:不需要显示位 缺点:需要输出mysql_error()的报错信息 报错函数 1、floor报错注入 floor()报错注入是利用count()、rand()、floor()、group by…

yum -list 报错

当你通过 ftp 对另一台主机配置 yum 源的时候报错显示如下&#xff1a; [rootclient ~]# yum list Loaded plugins: fastestmirror ^C^Ccd ^H^H^Hcd ^H^H^CCould not retrieve mirrorlist http://mirrorlist.centos.org/?release7&archx86_64&repoo…

String报错

​ 前言 记录一下在java编程中自己所遇到的报错 在IDEA中编写java程序时&#xff0c;可能会出现String报错的情况&#xff0c;这是我遇到的其中一种&#xff0c;一下是解决方案。 2.读入数据 点击红色框中的下载就可以啦&#xff01;

报错 org.springframework.beans.factory.NoSuchBeanDefinitionException 的解决办法

我在 zkui 中看到应该提供的 service 已经在 zk 中注册了&#xff0c;但是启动 Tomcat 的时候&#xff0c;还是提示没有指定 service 的 Bean。 仔细检查了好久好久才终于发现&#xff0c;原来是自己的 BeanID 写的不一致… 【自己挖坑自己跳啊啊啊啊啊啊啊啊】 仔细检查一下…