翻譯|使用教程|編輯:楊鵬連|2021-01-04 10:02:45.290|閱讀 293 次
概述:在此博客文章中,我們將演示如何設置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@fc6vip.cn
文章轉載自: