提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:杨鹏连|2021-01-04 10:02:45.290|阅读 223 次
概述:在此博客文章中,我们将演示如何设置Unix / Linux系统以在Electron.js下运行示例JavaScript图应用程序。我们使用一台运行Raspberry Pi OS的Raspberry Pi计算机,Raspberry Pi OS是为Raspberry Pi硬件而优化的基于Debian的OS。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
MindFusion.Diagramming for WinForms是一个能帮助你创建工作流和进程图表的.NET控件;数据库实体关系图表;组织图表;对象层次和关系图表;图表和树。它是基于对象-图表框,表格和箭头类型,将其归类分派给其他并结合成复杂的结构。该控件提供超过预先定义的50多种图表框,如自定义设计样式和对图表框着色等。MindFusion.Diagramming for WinForms现已加入在线订购,Standard Single Developer版本原价2848现在年终钜惠抢购立享优惠只需2345,立即查看详情>>
点击下载MindFusion.Diagramming for WinForms最新试用版
在此博客文章中,我们将演示如何设置Unix / Linux系统以在Electron.js下运行示例JavaScript图应用程序。我们使用一台运行Raspberry Pi OS的Raspberry Pi计算机,Raspberry Pi OS是为Raspberry Pi硬件而优化的基于Debian的OS。
这是我们的测试应用程序的外观:
1.安装NPM和Node.js
我们想要干净安装Node.js和npm,这就是为什么我们删除所有以前的版本和安装的原因,如果有的话:
sudo apt-get remove nodejs sudo apt-get remove npm卸载npm和Node.js后,我们将删除npm和node_modules文件夹的内容。
sudo rm -rf ~/.npm sudo rm -rf /usr/local/lib/node_modules然后,我们通过直接从npmjs网站运行安装脚本来安装npm和node.js:
curl -0 -L //npmjs.org/install.sh | sudo sh我们可以通过查询系统当前的npm和node.js版本来检查安装是否成功:
npm -v node -v如果您已卸载npm来重新安装它,则可能会出现以下错误:
-bash: /usr/bin/npm: No such file or directory
常见的情况是新的npm安装在新位置,并且bash已缓存路径。跑
hash -r
删除所有以前存储的映射。
在开始安装electron之前,请确保当前用户具有对node_modules目录的写权限。我们检查谁是目录的所有者:
ls -la / usr / local / lib / node_modules
在我们的例子中,结果是:
drwxr-xr-x 3 root root 4096 Nov 30 12:48 .
drwxr-xr-x 6 root root 4096 Nov 30 12:29 ..
drwxr-xr-x 9 root root 4096 Nov 30 12:29 npm
这意味着node_modules目录的读取权限归root(不是当前用户)所有。即使使用“ sudo”运行npm install命令,您仍可能会收到以下类型的访问冲突错误:
Error: EACCES: permission denied, mkdtemp '/usr/local/lib/node_modules/electron/electron-download-4LQBL9'
您可以通过授予当前用户权限来解决此问题:
sudo chown -R pi: /usr/local/lib/node_modules
在我们的情况下,该用户称为“ pi” –您需要在此处指定用户名。现在,该目录的查询返回:
pi@raspberrypi:~ $ ls -la /usr/local/lib/node_modules
total 12
drwxr-xr-x 3 pi pi 4096 Nov 30 12:48 .
drwxr-xr-x 6 pi root 4096 Nov 30 12:29 ..
drwxr-xr-x 9 pi pi 4096 Nov 30 12:29 npm
现在我们准备安装Electron.js。我们通过以下方式在全球范围内安装它:
npm install electron -g
并且我们已经设置了系统来运行Node.js和Electron.js。
二.图表设置
我们使用Electron快速入门指南中的默认模板准备一个空白页。在网页的主体中,我们创建一个Canvas,该Canvas将被该图使用:
<div> <canvas id =“ diagram”> </ canvas> </ div>然后,我们添加对图脚本的引用:
<script src =“ MindFusion.Common.js”> </ script> <script src =“ MindFusion.Diagramming.js”> </ script>我们已将这些脚本放置在与网页相同的目录中。然后,我们开始一个新的脚本部分,在其中创建图:
<script>
//创建图
var Diagram = MindFusion.Diagramming.Diagram;
//创建图对象
const canvas = document.getElementById(“ diagram”);
const diagram = Diagram.create(canvas);
diagram.setUndoEnabled(true);
diagram.setAllowInplaceEdit(true);
</ script>
我们首先创建一个映射到MindFusion.Diagramming.Diagram类的名称空间。然后,我们获得放置在网页中的HTML Canvas。我们使用ID进行识别。我们使用create静态方法创建Diagram对象,该方法将Canvas作为参数。然后,我们为新创建的图启用撤消和就地编辑。
让我们创建一个呈现一些文本的示例节点。我们这样做:
//创建一个样本节点 const node = diagram.getFactory()。createShapeNode(10,10,40,30); node.setText(“ Hello world!”);现在,如果您使用
npm start从项目文件所在的目录中,您将能够看到带有节点的页面。
三.替换默认的Electron.js菜单
我们要用对图表项目执行的操作替换默认的电子菜单“复制”,“剪切”,“粘贴”,“撤消”和“重做”。Diagram API支持相同的命令,我们希望它们执行而不是Electron.js提供的命令。
我们打开电子项目模板的index.js文件并获得菜单:
const {Menu} = require('electron'); const menu = Menu.getApplicationMenu();现在,我们访问此菜单中的每个项目,并通过onclick使它们发送其角色,例如其行为:
for (let item of menu.items)
{
if (item.submenu)
{
{
for (let subitem of item.submenu.items)
{
switch (subitem.role)
{
case "undo":
case "redo":
case "cut":
case "copy":
case "paste":
subitem.click =
() => win.webContents.send(subitem.role);
break;
}
}
}
}
}
我们编辑Electron.js模板的index.html和index.js文件以制作示例图:
然后,我们通过触发相应的图表方法来处理click事件。我们使用ipcRenderer常量获取事件:
const {ipcRenderer} = require('electron');ipcRenderer是Electron的用于发出事件的模块。我们使用它来了解菜单按钮上的click事件何时发生并处理点击:
ipcRenderer.on("undo", () => diagram.undo()); ipcRenderer.on("redo", () => diagram.redo()); ipcRenderer.on("cut", () => diagram.cutToClipboard()); ipcRenderer.on("copy", () => diagram.copyToClipboard()); ipcRenderer.on("paste", () => diagram.pasteFromClipboard(10, 10, false, false));这意味着,当用户单击内置菜单项时,该动作将被那些图表方法代替。
这就是我们教程的结尾。从以下位置下载示例项目:https :
//mindfusion.eu/_samples/FirstApp.zip
有关技术问题,请使用JS Diagram论坛:https : //mindfusion.eu/Forum/YaBB.pl?board=jsdiag_disc
关于JavaScript绘图:此本地JavaScript库为开发人员提供了创建和自定义任何类型的图,决策树,流程图,类层次结构,图,家谱树,BPMN图等的能力。该控件提供了丰富的事件集,众多的自定义选项,动画,图形操作,样式和主题。您有100多个预定义节点,表节点和15多种自动布局算法。在//mindfusion.eu/javascript-diagram.html上了解有关JavaScript制图的更多信息。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
FlowChart.NET是一款能够帮助你轻松创建流程图和示意图的.NET控件,可以自定义设计样式和图表框颜色。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢