公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

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

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

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

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

1. 服務器資源與 Electron 的高效結(jié)合

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

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 的調(diào)用和交互。

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

Electron 提供了 preload.js,這是一個在 Web 頁面加載之前運行的腳本,它允許安全地在前端和主進程之間創(chuàng)建通信通道。通過 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 實現(xiàn)前后端通訊

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

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

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

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

4. 綜合工作流

通過這套架構(gòu),Electron 可以:

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

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

  3. 利用 ipcMain 和 ipcRenderer 實現(xiàn)前后端的雙向通訊。

轉(zhuǎn)自https://www.cnblogs.com/chenyishi/p/18418596


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

主站蜘蛛池模板: 99国产欧美精品久久久蜜芽 | 国产99久久九九精品免费 | 韩国精品亚洲五月天精品 | 国产黄色视频免费在线观看 | 国产午夜免费一区二区三区 | 国产一区三区三区 | 精品国产av色一区 | 国产精品一区二区剧情熟女 | 精品国产一区二区国产精品国产 | 丰满人妻被两个按摩师 | 国产三级在线免费 | 国产成人av无码一二三区 | 国产微拍精品一区在线观看 | 国产精品国产三级国 | 国产精品爆乳奶水无码视频免費 | 国产高清在线精品一区在线 | 国产一区在线观看无码av | 2025欧美久久一级 | 国产精品成aⅴ人片在线观看 | 99精品人妻少妇一区二区 | 成人三级精品视频在线观看 | 国产成人免费ā片在线观看 | 18禁喷水流白浆自慰视噜噜噜 | 白嫩无码人妻熟妇啪啪区 | 精品国产a∨无码一区二区三区 | 韩国无码电影在线观看 | 99国产精品视 | 国产高清无码自99 | 国产麻豆剧果冻传媒白晶晶 | 国产成人综合美国十次 | 国产人妖xxxx做受视频 | 91大神在线观看精品无码 | 东京热av高清在线 | 国产成人18黄网站在线观看 | 国产成人免费在线播放 | 国产熟女亚洲精品麻豆 | 91精品国产高清久久久久久9 | 2025无码在线 | 成人一区二区三区 | 国产无套嗨操在线观看 | 2025国产精品午夜久久 |