Electron 安裝和使用(三)

2022-09-23 19:45:10 字數 1468 閱讀 8451

請切換到02-basic-sound-machine這個tag:

git checkout 02-basic-sound-machine

簡要重述–應用視窗(更準確的說是渲染程序)應該不能與gui(用來關閉視窗)通訊的,官方的electron快速入門指南寫到:

在web頁面,不允許呼叫原生gui相關的api,因為在web頁面管理原生gui資源是很危險的,會很容易洩露資源。如果你想在web頁面施行gui操作,web頁面的渲染程序必須要與主程序通訊,請求主程序來完成這些操作。

electron提供ipc(程序間通訊)模組來實現這類通訊。ipc模組可實現從通道訂閱訊息,傳送訊息給通道的訂閱者,通道區分訊息的接收者,用字元來標識(例如,通道1,通道2)。訊息也可以包含資料。當接收到訊息,訂閱者可以做出反應,甚至回覆訊息。訊息最大的好處就是隔離 — 主程序不必知道哪個渲染程序發出訊息。

這正是我們在做的 — 主程序(main.js)訂閱「close-main-window」通道的訊息,關閉按鈕被點選時,渲染程序(index.js)通過通道發出訊息。

在main.js裡新增下面的**,從通道訂閱訊息:

var ipc = require('ipc');

ipc.on('close-main-window', function () );

引入ipc模組後,通過通道訂閱訊息就變得很簡單,on()方法設定訂閱的通道名,定義**函式。渲染程序要通過通道傳送訊息,將下面**加入index.js:

var ipc = require('ipc');

var closeel = document.queryselector('.close');

closeel.addeventlistener('click', function () );

同樣,我們引入ipc模組,給關閉按鈕的元素繫結乙個click事件。當點選關閉按鈕時,通過「close-main-window」通道的send()方法傳送訊息。

這裡還有個小問題,如果不注意會卡住你,我們已經討論過–可拖動區域的可點選性。index.css需要把關閉按鈕定義成不可拖動:

.settings 就這樣,現在可以點選關閉按鈕關閉我們的應用了。因為要監聽事件或傳遞引數,通過ipc模組通訊比較複雜。我們後面會看到乙個傳遞引數的例子。

請切換到名為03-closable-sound-machine的tag:

git checkout 03-closable-sound-machine

基礎的發聲器工作順利,但是我們有乙個易用性問題–如果發聲器一定需要切到應用視窗,再點選才能**,這個發聲器有什麼用?

這時我們需要的就是全域性快捷鍵。electron提供乙個全域性快捷鍵模組,允許你監聽自定義的鍵盤組合並做出反應。鍵盤組合也被叫做加速器,是一系列鍵盤點選組成的字串(例如 「ctrl+shift+1」)。

既然我們想要捕捉乙個原生gui事件(全域性快捷鍵),然後在應用視窗做出反應(**聲音),我們仍用ipc模組在主程序和渲染程序之間通訊。

在深入到**層面前,有兩件事要考慮:

Electron簡介和安裝使用

一 electron簡介 electron的應用,使得了js不僅僅可以bs端專案,還可以做cs端專案。另外今天之所以研究下electron,還是因為公司的需要,業務場景是,通過electron.js開發出的桌面應用讓客戶可以通過這個桌面應用管理裝置和資產,同時也可以監控對應的裝置狀態等等。傳統的ex...

全域性安裝electron

electron 需要node 環境了,所以前期需要安裝好node環境 然後測試 node v npm v 1 npm init 初始化出現package.json檔案 2 npm install g electron 安裝electron 3 npx electron v 檢視elctron是否安...

electron使用總結

electron開發文件 環境安裝 安裝node npm 建立專案 1從github拉取示例專案 git clone 2進入專案目錄electron quick start 3修改配置main.js檔案 將mainwindow.loadfile index.html 改為mainwindow.loa...