ElectronJs 中的熱過載


熱過載是 ElectronJS 中的一個強大功能,它允許開發人員即時快速檢視其程式碼更改,而無需重新啟動應用程式。它透過減少測試更改所需的時間和精力,使開發過程更快、更高效。

在 ElectronJS 中實現熱過載的步驟

熱過載功能是使用名為“electron-reload”的庫實現的,它可以通過幾個簡單的步驟輕鬆整合到 Electron JS 應用程式中。使用者可以按照以下步驟在 Electron Js 中實現熱過載:

安裝 electron-reload 模組

在 Electron JS 中實現熱過載的第一步是安裝 electron-reload 模組。使用者可以使用 npm 如下安裝它:

npm install electron-reload 

在主程序中引入 electron-reload

安裝 electron-reload 模組後,我們需要在 Electron 應用程式的主程序中引入它。我們可以透過將以下程式碼新增到我們的 main.js 檔案中來實現:

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

重新載入渲染器程序

最後一步是在我們的程式碼發生更改時重新載入渲染器程序。我們可以透過將以下程式碼新增到我們的 renderer.js 檔案中來實現:

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

熱過載的高階用法和自定義選項

Electron 中的熱過載易於設定,但“electron-reload”模組提供了額外的選項,例如忽略特定檔案和資料夾以及排除某些模組不進行重新載入。

在 ElectronJS 中實現熱過載的重要函式

在熱過載中,有一些重要的函式需要理解,以便在我們的 Electron 應用程式中實現它:

module.hot.accept() − 此函式用於渲染器程序中,以啟用渲染器程序的熱過載。當對渲染器程序程式碼進行更改時,渲染器程序將自動重新載入,並且更改將即時反映在應用程式中。

electronReload(__dirname) − 此函式用於主程序中,以啟用主程序的熱過載。它在對程式碼進行更改時重新載入主程序,使我們能夠即時看到更改的效果。

app.on('ready', () => {...}) − 此事件處理程式函式在 Electron 應用程式準備好顯示給使用者時呼叫。它通常用於建立主視窗並載入初始 HTML 檔案。

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

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

示例

在此示例中,我們首先使用 electron.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');
}); 

renderer.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')
} 

renderer.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 應用程式中實現熱過載,並即時更改主程序和渲染器程序。

更新於: 2023年2月28日

4K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告