自定义 Electron 标题栏项目教程

自定义 Electron 标题栏项目教程

custom-electron-titlebarCustom electon title bar inpire on VS Code title bar项目地址:https://gitcode.com/gh_mirrors/cu/custom-electron-titlebar

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

custom-electron-titlebarCustom electon title bar inpire on VS Code title bar项目地址:https://gitcode.com/gh_mirrors/cu/custom-electron-titlebar

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钱勃骅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值