From 6dcb6643b19ef19fbbe4eb399b55076074254127 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8D=89=E9=9E=8B=E6=B2=A1=E5=8F=B7?= <308487730@qq.com> Date: Wed, 29 Jun 2022 07:39:53 +0800 Subject: [PATCH] chore: optimize code --- electron/main/index.ts | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/electron/main/index.ts b/electron/main/index.ts index 30a395a..488afed 100644 --- a/electron/main/index.ts +++ b/electron/main/index.ts @@ -1,4 +1,4 @@ -import { app, BrowserWindow, shell } from 'electron' +import { app, BrowserWindow, shell, ipcMain } from 'electron' import { release } from 'os' import { join } from 'path' @@ -12,34 +12,44 @@ if (!app.requestSingleInstanceLock()) { app.quit() process.exit(0) } + process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true' +export const ROOT_PATH = { + // /dist + dist: join(__dirname, '../..'), + // /dist or /public + public: join(__dirname, app.isPackaged ? '../..' : '../../../public'), +} + let win: BrowserWindow | null = null -// Here you can add more preload scripts -const splash = join(__dirname, '../preload/splash.js') -// 🚧 Use ['ENV_NAME'] to avoid vite:define plugin +// Here, you can also use other preload +const preload = join(__dirname, '../preload/index.js') +// 🚧 Use ['ENV_NAME'] avoid vite:define plugin const url = `http://${process.env['VITE_DEV_SERVER_HOST']}:${process.env['VITE_DEV_SERVER_PORT']}` +const indexHtml = join(ROOT_PATH.dist, 'index.html') async function createWindow() { win = new BrowserWindow({ title: 'Main window', + icon: join(ROOT_PATH.public, 'favicon.svg'), webPreferences: { - preload: splash, + preload, nodeIntegration: true, contextIsolation: false, }, }) if (app.isPackaged) { - win.loadFile(join(__dirname, '../../index.html')) + win.loadFile(indexHtml) } else { win.loadURL(url) // win.webContents.openDevTools() } - // Test active push message to Renderer-process + // Test actively push message to the Electron-Renderer win.webContents.on('did-finish-load', () => { - win?.webContents.send('main-process-message', (new Date).toLocaleString()) + win?.webContents.send('main-process-message', new Date().toLocaleString()) }) // Make all links open with the browser, not with the application @@ -72,3 +82,19 @@ app.on('activate', () => { createWindow() } }) + +// new window example arg: new windows url +ipcMain.handle('open-win', (event, arg) => { + const childWindow = new BrowserWindow({ + webPreferences: { + preload, + }, + }) + + if (app.isPackaged) { + childWindow.loadFile(indexHtml, { hash: arg }) + } else { + childWindow.loadURL(`${url}/#${arg}`) + // childWindow.webContents.openDevTools({ mode: "undocked", activate: true }) + } +})