首頁  >  文章  >  web前端  >  ElectronJs 中的熱重載

ElectronJs 中的熱重載

王林
王林轉載
2023-08-30 12:17:091477瀏覽

ElectronJs 中的热重载

熱重載是 ElectronJS 中的一項強大功能,它可以讓開發人員快速即時查看程式碼更改,而無需重新啟動應用程式。透過減少測試變更所需的時間和精力,它使開發過程更快、更有效率。

在 ElectronJS 實現熱重載的步驟

熱重載功能是使用一個名為「Electron-Reload」的程式庫實現的,透過幾個簡單的步驟就可以輕鬆地將其整合到Electron JS應用程式中。使用者可以按照以下步驟在 Electron Js 中實現熱重載 -

安裝電子重載模組

在 Electron JS 實現熱重載的第一步是安裝 electro-reload 模組。用戶可以使用 npm 安裝它,如下所示 -

npm install electron-reload 

在主流程中需要電子重新載入

一旦安裝了電子重載模組,我們就需要在電子應用程式的主流程中使用它。我們可以透過將以下程式碼新增至 main.js 檔案來實現 -

const electronReload = require('electron-reload');
electronReload(__dirname);

重新載入渲染器程序

最後一步是每當我們的程式碼發生更改時重新載入渲染器程序。我們可以透過將以下程式碼新增至 renderer.js 檔案來做到這一點 -

if (module.hot) {
   module.hot.accept();
}

熱重載的進階使用和自訂選項

Electron 中的熱重新載入很容易設置,但「電子重新載入」模組提供了額外的選項,例如忽略特定檔案和資料夾以及從重新載入中排除某些模組。

ElectronJS 中實作熱重載的重要函數

在熱重載中,需要了解一些重要的函數,以便在我們的 Electron 應用程式中實現它 -

module.hot.accept() - 此函數在渲染器程序中使用,以啟用渲染器程序的熱重載。當渲染器進程程式碼發生變更時,渲染器進程將自動重新加載,並且變更將即時反映在應用程式中。

ElectronReload(__dirname) - 此函數在主程序中使用,以啟用主程序的熱重載。每當程式碼發生變更時,它都會重新載入主進程,使我們能夠即時查看更改的效果。

app.on('ready', () => {...}) - 當 Electron 應用程式準備好向使用者顯示時,將呼叫此事件處理函數。它通常用於創建主視窗並加載初始 HTML 文件。

BrowserWindow - 此類別用於在 Electron 應用程式中建立新視窗。在主進程中,我們可以建立 BrowserWindow 的實例並設定各種選項,例如大小和 Web 首選項,以自訂每個視窗的外觀和行為。

這些函數是理解 Electron JS 中熱重載如何運作的關鍵,並且在本教程前面提供的範例中使用。透過了解如何使用這些函數,我們可以在 Electron 應用程式中實現熱重載,並即時更改主進程和渲染器進程。

範例

在此範例中,首先我們使用 electro.app 模組建立一個新的 ElectronJS 應用程序,並使用 on 方法註冊一個回調函數,該函數在應用程式準備好時觸發。在此回調函數中,我們使用 Electron.BrowserWindow 模組建立一個新的瀏覽器窗口,並將 index.html 檔案載入到其中。

接下來,在 renderer.js 檔案中,我們使用 module.hot 屬性在渲染器進程中啟用熱重載。這樣,如果我們對 renderer.js 檔案進行任何更改,更新的程式碼將自動重新載入。

最後,我們使用 console.log 來記錄訊息「Hello World!」到控制台。

index.html 文件是一個簡單的 HTML 文件,它顯示標題和段落並用作應用程式的 UI。

main.js

#
// main.js 
const { app, BrowserWindow } = require('electron');
const electronReload = require('electron-reload');
electronReload(__dirname);
let win;
app.on('ready', () => {
   win = new BrowserWindow({
      width: 800,
      height: 600,
      webPreferences: {
         nodeIntegration: true
      }
   });
   win.loadFile('index.html');
}); 

渲染器.js

#
// renderer.js
if (module.hot) {
   module.hot.accept();
}
document.getElementById('root').innerHTML = 'Hello, Hot Reloading!'; 

index.html

#
<html lang = "en" >
<head>
   <title> Electorn Js </title>
</head>
<body> 
   <h2> Hot Reload in ElectornJs </h2>
   <p> With hot reloading enabled, any changes made to the code in the "main.js" or "renderer.js" files will be reflected in the application in real-time without requiring a full restart of the application. </p>
</body>
 </html>

範例

在此範例中,ElectronJs 應用程式設定為在觸發「ready」事件時建立一個新窗口,並且該窗口會載入 index.html 檔案。

「renderer.js」檔案包含熱模組重新載入(HMR)語句,每當程式碼發生變更時,該語句都會重新載入渲染器程序。它還記錄“Hello World!”到控制台。

「index.html」檔案顯示一個標題和一個段落,表示熱重載已啟用。

main.js

#
// main.js
const electron = require('electron');
const electronReload = require('electron-reload');
electronReload(__dirname);
const app = electron.app;
app.on('ready', createWindow);

function createWindow () {
   
   // Create the browser window.
   const win = new electron.BrowserWindow({
      width: 800,
      height: 600,
      webPreferences: {
         nodeIntegration: true
      }
   })

   // and load the index.html of the app.
   win.loadFile('index.html')
} 

渲染器.js

#
// renderer.js
if (module.hot) {
   module.hot.accept();
}
console.log('Hello World!');

index.html

#
<html>
<head>
   <title> Electorn Js </title>
</head>
<body>
   <h2> Hot Reload Enabled </h2>
   <p> Hot reloading allows for a faster development experience as we can see the effects of our changes immediately. </p>
</body>
</html>

在本教程中,使用者了解了 ElectronJS 中的熱重載功能,以及它如何透過允許開發人員即時查看程式碼變更的效果而無需重新啟動整個應用程式來使開發過程更快、更有效率。

用戶也了解了ElectronJS 中實現熱重載的關鍵功能和步驟,例如在主進程中要求Electron-reload 模組、重載渲染器進程以及理解module.hot.accept( 等函數) )、electronReload( __dirname)、app.on('ready', () => {...}) 和BrowserWindow。透過遵循這些步驟並理解這些關鍵功能,使用者可以在我們的 ElectronJS 應用程式中實現熱重載,並即時更改主進程和渲染器進程。

以上是ElectronJs 中的熱重載的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除