狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

高效打造跨平臺桌面應用:Electron加載服務器端JS

freeflydom
2024年9月20日 9:31 本文熱度 814

在現代桌面應用開發中,使用 Electron 加載遠程服務器托管的前端資源,再與本地 API 交互,能夠帶來靈活的部署和強大的本地功能支持。這種方式不僅提升了開發效率,還能充分利用 PC 端的資源和性能。

本文將深入解析如何使用 Electron 實現這一架構,并探討其背后的關鍵技術,包括 ipcMain 和 ipcRenderer 進程間通訊,以及 preload.js 安全交互等內容。你將學會如何打造既能隨時更新前端,又能高效利用本地硬件資源的桌面應用。

1. 服務器資源與 Electron 的高效結合

通常,我們的前端資源(HTML、CSS、JavaScript)可以托管在遠程服務器上,比如通過 Nginx、Apache 等托管工具來部署靜態頁面和資源。

Electron 使用 BrowserWindow 加載這些遠程資源:

const { app, BrowserWindow } = require('electron');
const path = require('path'); function createWindow() {    
   const win = new BrowserWindow({        width: 800,        height: 600,        webPreferences: {            preload: path.join(__dirname, 'preload.js'),            nodeIntegration: false,            contextIsolation: true,        },    });    // 加載服務器托管的前端頁面 win.loadURL('https://example.com'); } app.whenReady().then(createWindow);

這樣,Electron 應用可以直接從服務器加載最新的前端資源,同時主進程負責處理本地 API 的調用和交互。

2. preload.js:前端與本地 API 的安全橋梁

Electron 提供了 preload.js,這是一個在 Web 頁面加載之前運行的腳本,它允許安全地在前端和主進程之間創建通信通道。通過 preload.js,我們可以將本地 API 的訪問封裝起來,并通過 contextBridge 暴露給前端。

const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('electronAPI', {
    sendMessage: (channel, data) => {        
       const validChannels = ['toMain'];        
       if (validChannels.includes(channel)) {            ipcRenderer.send(channel, data);        }    },    receiveMessage: (channel, func) => {        
       const validChannels = ['fromMain'];        
       if (validChannels.includes(channel)) {            ipcRenderer.on(channel, (event, ...args) => func(...args));        }    } });

這種方式確保前端無法直接訪問 Node.js API,從而提高了應用的安全性。

3. 利用 ipcMain 和 ipcRenderer 實現前后端通訊

前端通過 preload.js 與主進程進行消息交互,而主進程通過 ipcMain 監聽來自前端的請求。以下是主進程中如何處理前端請求并與本地 API 交互的示例:

const { ipcMain } = require('electron');
ipcMain.on('toMain', (event, data) => {
    console.log('收到前端數據:', data);    // 調用本地 API 或進行其他操作
    const response = callLocalAPI(data);    // 發送結果給前端
    event.sender.send('fromMain', response);
});
function callLocalAPI(data) {    return `處理后的數據: ${data}`;
}

前端可以使用暴露的 API 來發送消息并接收響應:

<script>
    window.electronAPI.sendMessage('toMain', '這是來自前端的數據');
    window.electronAPI.receiveMessage('fromMain', (response) => {
        console.log('收到主進程響應:', response);
    });
</script>

4. 綜合工作流

通過這套架構,Electron 可以:

  1. 從服務器加載和渲染最新的前端資源。

  2. 使用 preload.js 提供安全的接口,允許前端與本地 API 進行通訊。

  3. 利用 ipcMain 和 ipcRenderer 實現前后端的雙向通訊。

轉自https://www.cnblogs.com/chenyishi/p/18418596


該文章在 2024/9/20 9:31:47 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved