自定义 Electron 标题栏项目教程
1. 项目的目录结构及介绍
custom-electron-titlebar/
├── dist/
│ ├── main.js
│ ├── preload.js
│ └── renderer.js
├── src/
│ ├── main/
│ │ └── main.ts
│ ├── preload/
│ │ └── preload.ts
│ ├── renderer/
│ │ ├── index.html
│ │ ├── index.ts
│ │ └── styles.css
│ └── types/
│ └── custom-electron-titlebar.d.ts
├── package.json
├── tsconfig.json
└── README.md
dist/
: 编译后的文件目录,包含主进程、预加载脚本和渲染进程的 JavaScript 文件。src/
: 源代码目录,包含 TypeScript 文件。main/
: 主进程代码。preload/
: 预加载脚本代码。renderer/
: 渲染进程代码,包括 HTML、TypeScript 和 CSS 文件。types/
: 自定义类型定义文件。
package.json
: 项目配置文件,包含依赖、脚本等信息。tsconfig.json
: TypeScript 配置文件。README.md
: 项目说明文档。
2. 项目的启动文件介绍
主进程启动文件
src/main/main.ts
是主进程的入口文件,负责创建窗口和管理应用的生命周期。
import { app, BrowserWindow } from 'electron';
import path from 'path';
function createWindow() {
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, '../preload/preload.js'),
},
});
mainWindow.loadFile(path.join(__dirname, '../renderer/index.html'));
}
app.whenReady().then(createWindow);
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});
预加载脚本
src/preload/preload.ts
是预加载脚本,负责在渲染进程加载之前注入必要的 API。
import { contextBridge, ipcRenderer } from 'electron';
contextBridge.exposeInMainWorld('electron', {
send: (channel: string, data: any) => {
ipcRenderer.send(channel, data);
},
receive: (channel: string, func: (data: any) => void) => {
ipcRenderer.on(channel, (event, ...args) => func(...args));
},
});
渲染进程启动文件
src/renderer/index.ts
是渲染进程的入口文件,负责初始化页面和处理用户交互。
import './styles.css';
document.addEventListener('DOMContentLoaded', () => {
const titlebar = new CustomTitlebar({
backgroundColor: Color.fromHex('#2f3241'),
});
titlebar.updateTitle('自定义 Electron 标题栏');
});
3. 项目的配置文件介绍
package.json
package.json
文件包含了项目的元数据和依赖信息,以及一些脚本命令。
{
"name": "custom-electron-titlebar",
"version": "1.0.0",
"main": "dist/main/main.js",
"scripts": {
"start": "electron .",
"build": "tsc"
},
"dependencies": {
"electron": "^13.1.7"
},
"devDependencies": {
"typescript": "^4.3.5"
}
}
tsconfig.json
tsconfig.json
文件是 Type
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考