淺談electron

      網友投稿 933 2025-04-03

      Electron官網: ?https://www.Electronjs.org/


      ##

      使用 JavaScript,HTML 和 CSS 構建跨平臺的桌面應用程序

      Electron相當于一個瀏覽器的外殼,可以把網頁程序嵌入到殼里面,可以運行在桌面上的一個程序,可以把網頁打包成一個在桌面運行的程序,通俗來說就是軟件,比如像QQ、優酷、網易音樂等等。功能的強大超出你的想象,可以構建跨平臺桌面程序,?本身支持node.js,可以使用node.js的一些模塊

      ##

      主進程

      在?Electron?中,運行 package.json 主腳本的過程稱為主進程 (main process)。在主進程運行的腳本可以以創建 web 頁面的形式展示?GUI?(圖形用戶界面(Graphical User Interface)。

      一個 Electron 應用有且只有一個主進程。并且創建窗口等所有系統事件都要在主進程中進行。

      由于 main 進程本質上是一個完整的 node 環境,所以除了以下兩個文件之外,并沒有什么初始的項目結構。

      src/main/index.js

      這個文件是你應用程序的主文件,electron 也從這里啟動。它也被用作 webpack 產品構建的入口文件。所有的 main 進程工作都應該從這里開始。

      app/src/main/index.dev.js

      這個文件專門用于開發階段,因為它會安裝 electron-debug 和 vue-devtools。一般不需要修改此文件,但它可以用于擴展你開發的需求。

      渲染進程

      由于?Electron?使用?Chromium?顯示網頁,那么,Chromium?的多進程架構也被使用。Electron?中的每個網頁都在自己的進程中運行,稱為渲染器進程 (renderer process)。

      在正常的瀏覽器中,網頁通常運行在沙盒封裝化的環境中,并且不允許訪問本機資源。然而,Electron 用戶有權在網頁中使用 Node.js 的 API,從而允許較低級別的操作系統交互。

      Chromium是由Google主導開發的網頁瀏覽器?Chromium

      也就是說每創建一個?web?頁面都會創建一個渲染進程。每個?web?頁面都運行在它自己的渲染進程中。每個渲染進程是獨立的,它只關心它所運行的頁面。

      主進程與渲染進程的區別

      主進程使用?BrowserWindow?實例創建網頁。每個?BrowserWindow?實例都在自己的渲染進程中運行。當一個?BrowserWindow?實例被銷毀后,相應的渲染進程也會被終止。

      主進程管理所有頁面和與之對應的渲染進程。每個渲染進程都是相互獨立的,并且只關心他們自己的網頁。

      使用Electron的API

      Electron?在主進程和渲染進程中提供了大量 API 去幫助開發桌面應用程序, 在主進程和渲染進程中,可以通過require()?方法將其包含在模塊中,以此獲取?Electron?的?API。

      引入 electron:

      const electron = require('electron');

      所有?Electron?的 API 都被指派給一種進程類型。許多 API?只能被用于主進程或渲染進程中,但其中一些 API 可以同時在上述兩種進程中使用。 每一個 API 的文檔都將聲明我們可以在哪種進程中使用該 API 。

      Electron?中的窗口是使用?BrowserWindow?類型創建的一個實例, 它只能在主進程中使用,如下所示:

      const { BrowserWindow } = require('electron') const win = new BrowserWindow()

      主進程和渲染進程之間通信

      Electron?的主進程是在后臺運行,對應?main.js?文件。而渲染進程是前端看到的,對應?index.html?文件。這個兩個進程之間的通信首選?ipc?方式,因為它會在完成時返回,而不會阻止同一進程中的其他操作。

      IPC(Inter-Process Communication,進程間通信?IPC

      異步通信,在發送消息之后,不會阻止同一進程中程序的繼續運行。下列示例渲染進程發送異步消息 ping 到主進程,然后主進程回答 pong。

      示例:

      渲染器進程:

      const ipc = require('electron').ipcRenderer const asyncMsgBtn = document.getElementById('async-msg') asyncMsgBtn.addEventListener('click', function () { ipc.send('asynchronous-message', 'ping') }) ipc.on('asynchronous-reply', function (event, arg) { const message = `異步消息回復: ${arg}` document.getElementById('async-reply').innerHTML = message })

      const ipc = require('electron').ipcMain ipc.on('asynchronous-message', function (event, arg) { event.sender.send('asynchronous-reply', 'pong') })

      除了以異步方式在進程之間發送消息,我們還可以使用 ipc 模塊在進程之間發送同步消息,但是此方法的同步特性意味著它在完成任務時會阻止其他操作。

      示例:

      渲染器進程:

      const ipc = require('electron').ipcRenderer const syncMsgBtn = document.getElementById('sync-msg') syncMsgBtn.addEventListener('click', function () { const reply = ipc.sendSync('synchronous-message', 'ping') const message = `同步消息回復: ${reply}` document.getElementById('sync-reply').innerHTML = message })

      主進程:

      const ipc = require('electron').ipcMain ipc.on('synchronous-message', function (event, arg) { event.returnValue = 'pong' })

      讀寫本地文件

      使用?electron?的一大好處是?可以訪問用戶的文件系統。這使你可以讀取和寫入本地系統上的文件。為了避免 Chromium 的限制以及對應用程序內部文件的改寫,請確保使用 electron 的 API,特別是?app.getPath(name)?函數。這個幫助函數可以使你獲得指向系統目錄的文件路徑,如用戶的桌面、系統臨時文件 等等

      electron - vue

      官網地址: https://simulatedgreg.gitbooks.io/electron-vue/content/cn/

      淺談electron

      API Electron 任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:crm管理系統多少錢(靈活定制的客戶管理工具
      下一篇:如何評價國內的低代碼開發平臺(低代碼開發平臺排名)
      相關文章
      亚洲成网777777国产精品| 亚洲成a人片在线看| 亚洲AV无码国产剧情| 亚洲日本成本人观看| 亚洲黄页网在线观看| 亚洲人成在线精品| 亚洲精品第五页中文字幕| 亚洲精品美女久久久久| 亚洲精品视频在线观看视频| 亚洲天堂一区二区| 亚洲高清无在码在线无弹窗 | 久久综合亚洲鲁鲁五月天| 亚洲成a人片77777老司机| 亚洲an天堂an在线观看| 久久亚洲sm情趣捆绑调教| 亚洲男人天堂影院| 亚洲人成网男女大片在线播放| 亚洲成a人片在线看| 亚洲成AV人片高潮喷水| 国产亚洲人成在线播放| 亚洲高清无码综合性爱视频| 久久精品国产亚洲Aⅴ香蕉 | 99亚偷拍自图区亚洲| 亚洲欧洲精品成人久久曰| 精品国产亚洲一区二区三区在线观看 | 亚洲综合成人婷婷五月网址| 亚洲人av高清无码| 国产精品亚洲一区二区无码| 亚洲男人在线无码视频| 亚洲国产精品一区二区久久hs| 无码专区—VA亚洲V天堂| 亚洲成人免费网站| 一本天堂ⅴ无码亚洲道久久| 老司机亚洲精品影院在线观看| 亚洲国产香蕉人人爽成AV片久久| 日韩一卡2卡3卡4卡新区亚洲| 国产成A人亚洲精V品无码| 亚洲av日韩av无码| ass亚洲**毛茸茸pics| 激情无码亚洲一区二区三区| 国产亚洲人成A在线V网站|