You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
2.0 KiB

  1. // 引入Electron的核心模块
  2. const { app, BrowserWindow, Menu } = require("electron");
  3. const path = require("path");
  4. // 创建窗口的函数
  5. function createWindow() {
  6. // 定义图标路径
  7. const iconPath = path.join(__dirname, "./public/app.png");
  8. // 新建一个窗口(就像打开一个浏览器窗口)
  9. const mainWindow = new BrowserWindow({
  10. width: 800, // 窗口宽度
  11. height: 600, // 窗口高度
  12. icon: iconPath,
  13. ...(process.platform === "linux" ? { icon } : {}),
  14. webPreferences: {
  15. // 允许在Vue页面中使用Node.js的功能(可选,按需开启)
  16. nodeIntegration: true,
  17. contextIsolation: false,
  18. },
  19. });
  20. // 告诉窗口要显示的内容:
  21. // 开发阶段,显示Vue3的本地服务地址(就是刚才npm run dev的地址)
  22. mainWindow.loadURL("http://localhost:5173");
  23. // 创建一个简单的菜单(包含前进/后退按钮)
  24. // const menu = Menu.buildFromTemplate([
  25. // {
  26. // label: "", // 菜单名称
  27. // icon: path.join(__dirname, './public/left.png'), // 16x16
  28. // submenu: [
  29. // {
  30. // label: "后退", // 后退按钮
  31. // click: () => mainWindow.webContents.goBack(), // 调用后退API
  32. // },
  33. // {
  34. // label: "前进", // 前进按钮
  35. // click: () => mainWindow.webContents.goForward(), // 调用前进API
  36. // },
  37. // ],
  38. // },
  39. // ]);
  40. const menu = null;
  41. Menu.setApplicationMenu(menu); // 把菜单应用到窗口
  42. // 打开开发者工具(类似浏览器的F12,方便调试,可选)
  43. // mainWindow.webContents.openDevTools()
  44. }
  45. // 当Electron准备好后,创建窗口
  46. app.whenReady().then(() => {
  47. createWindow();
  48. // 对于Mac系统的兼容(不用深究,照抄即可)
  49. app.on("activate", () => {
  50. if (BrowserWindow.getAllWindows().length === 0) createWindow();
  51. });
  52. });
  53. // 关闭所有窗口时退出应用(Windows和Linux的习惯)
  54. app.on("window-all-closed", () => {
  55. if (process.platform !== "darwin") app.quit();
  56. });