46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
// ============================================================
|
|
// BrowserWindow 创建与配置
|
|
// 职责:窗口属性、加载策略(开发/生产)、快捷键
|
|
// ============================================================
|
|
|
|
import { app, BrowserWindow, screen } from 'electron'
|
|
import { join } from 'path'
|
|
|
|
// 判断是否为开发模式
|
|
const isDev = process.env.NODE_ENV === 'development' || !app.isPackaged
|
|
|
|
// 前端路径配置
|
|
const FRONTEND_DEV_URL = 'http://localhost:5173'
|
|
const FRONTEND_DIST_PATH = '../frontend/dist/index.html'
|
|
|
|
export function createMainWindow(): BrowserWindow {
|
|
const { width, height } = screen.getPrimaryDisplay().workAreaSize
|
|
|
|
const win = new BrowserWindow({
|
|
width: Math.min(1400, width),
|
|
height: Math.min(900, height),
|
|
minWidth: 800,
|
|
minHeight: 600,
|
|
title: 'CamTalk',
|
|
titleBarStyle: process.platform === 'darwin' ? 'hiddenInset' : 'default',
|
|
backgroundColor: '#1a1a2e',
|
|
webPreferences: {
|
|
preload: join(__dirname, '../preload/index.js'),
|
|
contextIsolation: true,
|
|
nodeIntegration: false,
|
|
// 允许加载 http 资源(连接远程后端时需要)
|
|
webSecurity: false,
|
|
},
|
|
})
|
|
|
|
// 加载前端内容
|
|
if (isDev) {
|
|
win.loadURL(FRONTEND_DEV_URL)
|
|
win.webContents.openDevTools({ mode: 'detach' })
|
|
} else {
|
|
win.loadFile(join(__dirname, FRONTEND_DIST_PATH))
|
|
}
|
|
|
|
return win
|
|
}
|