feat: QZ Music for Windows(个人学习项目);Vue主界面+设置界面;Router路由;Pinia全局状态管理;封面取色;IPC通信示例

This commit is contained in:
lqtmcstudio
2026-01-02 14:14:59 +08:00
commit 1a397a7fb3
26 changed files with 9385 additions and 0 deletions

67
dist-electron/main.js Normal file
View File

@@ -0,0 +1,67 @@
import { ipcMain, BrowserWindow, app, Menu } from "electron";
import { createRequire } from "node:module";
import { fileURLToPath } from "node:url";
import path from "node:path";
createRequire(import.meta.url);
const __dirname$1 = path.dirname(fileURLToPath(import.meta.url));
process.env.APP_ROOT = path.join(__dirname$1, "..");
const VITE_DEV_SERVER_URL = process.env["VITE_DEV_SERVER_URL"];
const MAIN_DIST = path.join(process.env.APP_ROOT, "dist-electron");
const RENDERER_DIST = path.join(process.env.APP_ROOT, "dist");
process.env.VITE_PUBLIC = VITE_DEV_SERVER_URL ? path.join(process.env.APP_ROOT, "public") : RENDERER_DIST;
let win;
function createWindow() {
win = new BrowserWindow({
// 🔧 禁用原生标题栏(无边框)
frame: false,
icon: path.join(process.env.VITE_PUBLIC, "electron-vite.svg"),
webPreferences: {
preload: path.join(__dirname$1, "preload.mjs")
}
});
win.webContents.on("did-finish-load", () => {
win == null ? void 0 : win.webContents.send("main-process-message", (/* @__PURE__ */ new Date()).toLocaleString());
});
if (VITE_DEV_SERVER_URL) {
win.loadURL(VITE_DEV_SERVER_URL);
} else {
win.loadFile(path.join(RENDERER_DIST, "index.html"));
}
}
ipcMain.on("window-minimize", (event) => {
const win2 = BrowserWindow.fromWebContents(event.sender);
win2 == null ? void 0 : win2.minimize();
});
ipcMain.on("window-maximize", () => {
if (win == null ? void 0 : win.isMaximized()) {
win.unmaximize();
} else {
win == null ? void 0 : win.maximize();
}
});
ipcMain.on("window-close", () => {
win == null ? void 0 : win.close();
});
ipcMain.handle("window-is-maximized", () => {
return (win == null ? void 0 : win.isMaximized()) || false;
});
app.on("window-all-closed", () => {
if (process.platform !== "darwin") {
app.quit();
win = null;
}
});
app.on("activate", () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});
app.whenReady().then(() => {
Menu.setApplicationMenu(null);
createWindow();
});
export {
MAIN_DIST,
RENDERER_DIST,
VITE_DEV_SERVER_URL
};