https://www.electronjs.org/zh/docs/latest/tutorial/quick-start
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
const { app, BrowserWindow, ipcMain } = require('electron/main'); const path = require('node:path');
const createWindow = () => { const mainWindow = new BrowserWindow({ width: 800, height: 700, frame: false, webPreferences: { preload: path.join(__dirname, 'preload.js'), }, });
mainWindow.loadFile('index.html');
};
app.whenReady().then(() => { ipcMain.handle('ping', () => 'pong'); createWindow();
app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) createWindow(); }); });
app.on('window-all-closed', () => { if (process.platform !== 'darwin') app.quit(); });
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
window.addEventListener('DOMContentLoaded', () => { const replaceText = (selector, text) => { const element = document.getElementById(selector); if (element) element.innerText = text; };
for (const dependency of ['chrome', 'node', 'electron']) { replaceText(`${dependency}-version`, process.versions[dependency]); } });
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('versions', { node: () => process.versions.node, chrome: () => process.versions.chrome, electron: () => process.versions.electron, ping: () => ipcRenderer.invoke('ping'), }); const func = async () => { const response = await window.versions.ping(); console.log(response); };
func();
|
1 2 3 4 5 6 7
| .between { font-size: 1.4rem; position: absolute; top: 2rem; right: 2rem; -webkit-app-region: drag; }
|