当前位置: 首页 > wzjs >正文

五合一网站制作视频教程?成品网页网站

五合一网站制作视频教程?,成品网页网站,哪个网站可以做中文云文字,有什么网站可以免费注册本文将详细介绍如何将基于 Vue3.2 的项目打包成 Electron 桌面应用。通过结合 Electron 和 Vue CLI 工具链,可以轻松实现跨平台桌面应用的开发与发布。 1. 项目结构说明 项目主要分为以下几个部分: electron/main.js:Electron 主进程文件。…

本文将详细介绍如何将基于 Vue3.2 的项目打包成 Electron 桌面应用。通过结合 Electron 和 Vue CLI 工具链,可以轻松实现跨平台桌面应用的开发与发布。

1. 项目结构说明

项目主要分为以下几个部分:

  • electron/main.js:Electron 主进程文件。
  • electron/preload.js:Electron 预加载脚本。
  • package.json:项目配置文件,包含 Electron 相关依赖和脚本。
  • .env 和 .env.electron:环境变量配置文件,分别用于普通模式和 Electron 模式。
  • vue.config.js:Vue CLI 的配置文件,用于优化构建和资源路径。
  • router.ts:Vue 路由配置文件,支持 hash 和 history 模式切换。

2. 代码详解

npm install electron electron-builder cross-env --save-dev

2.1 electron/main.js

主进程文件负责创建窗口并加载 Vue 应用:

const { app, BrowserWindow, globalShortcut, Menu } = require("electron");
const path = require("path");let mainWindow;// 捕获未处理的异常
process.on("uncaughtException", (error) => {console.error("Uncaught Exception:", error);
});process.on("unhandledRejection", (reason, promise) => {console.error("Unhandled Rejection at:", promise, "reason:", reason);
});function createWindow() {mainWindow = new BrowserWindow({width: 800,height: 600,icon: path.join(__dirname, "src", "assets", "logo_32.ico"),  // 设置窗口图标 尺寸:32*32images: true, // 启用图像支持show: false, // 初始时不显示窗口,避免闪烁// frame: false, // 隐藏默认的窗口边框和标题栏// fullscreen: true, // 启动时全屏webPreferences: {preload: path.join(__dirname, "preload.js"), // 预加载脚本(可选)nodeIntegration: true, // 启用 Node.js 集成(根据需要开启)// 添加以下配置解决媒体自动播放问题webSecurity: false, // 禁用同源策略(开发时可关闭,生产环境慎用)autoplayPolicy: "no-user-gesture-required", // 允许自动播放contextIsolation: false, // 必须为false才能访问全局变量},});// 加载 Vue 项目的生产构建文件if (process.env.NODE_ENV === "development") {mainWindow.loadURL("http://localhost:3000"); // 开发环境(Vue 开发服务器)} else {mainWindow.loadFile(path.join(__dirname, "../dist/index.html")); // 生产环境}// 窗口最大化mainWindow.maximize();// 显示窗口(在最大化后显示)mainWindow.show();// 隐藏菜单栏Menu.setApplicationMenu(null);// 打开开发者工具(开发时可以打开)// mainWindow.webContents.openDevTools();// 打开调试工具globalShortcut.register("CommandOrControl+Shift+I", () => {mainWindow.webContents.openDevTools();});// 切换全屏globalShortcut.register("CommandOrControl+Alt+Q", () => {if (mainWindow) {const isFullScreen = mainWindow.isFullScreen();mainWindow.setFullScreen(!isFullScreen);}});// 返回上一页globalShortcut.register("CommandOrControl+Left", () => {if (mainWindow) {const history = mainWindow.webContents.navigationHistory;if (history.canGoBack()) {history.goBack();}}});// 刷新页面globalShortcut.register("CommandOrControl+R", () => {if (mainWindow) {mainWindow.webContents.reload();}});mainWindow.on("closed", () => {mainWindow = null;});
}app.whenReady().then(() => {createWindow();// 创建自定义菜单// const menuTemplate = [//   {//     label: "操作",//     submenu: [//       { type: "separator" },//       { label: "切换全屏", role: "togglefullscreen" },//       { type: "separator" },//       {//         label: "返回上一页",//         accelerator: "CmdOrCtrl+Left",//         click: () => {//           if (mainWindow && mainWindow.webContents.canGoBack()) {//             mainWindow.webContents.goBack();//           }//         },//       },//     ],//   },// ];// // 根据模板创建菜单// const menu = Menu.buildFromTemplate(menuTemplate);// // 设置应用菜单// Menu.setApplicationMenu(menu);app.on("activate", () => {if (BrowserWindow.getAllWindows().length === 0) {createWindow();}});
});app.on("window-all-closed", () => {if (process.platform !== "darwin") {app.quit();}
});// 退出时注销快捷键
app.on("will-quit", () => {globalShortcut.unregisterAll();
});

2.2 electron/preload.js

const { contextBridge, ipcRenderer } = require('electron');contextBridge.exposeInMainWorld('electronAPI', {send: (channel, data) => ipcRenderer.send(channel, data),receive: (channel, func) => ipcRenderer.on(channel, (event, ...args) => func(...args)),
});

2.3 package.json

配置了 Electron 相关的脚本和依赖:

{"name": "saas_system","version": "0.1.35","private": true,"main": "electron/main.js","scripts": {"serve": "vue-cli-service serve","build": "vue-cli-service build","test:unit": "vue-cli-service test:unit","lint": "vue-cli-service lint","start": "electron .","build:electron": "vue-cli-service build --mode electron","electron:serve": "vue-cli-service serve --mode development && electron .","electron:build": "vue-cli-service build --mode electron && electron-builder"},"dependencies": {"electron": "^35.1.3","electron-builder": "^26.0.12"},"build": {"appId": "com.example.myapp","productName": "myapp","files": ["dist/**/*","electron/main.js","src/assets/logo.ico" // 尺寸:256*256],"win": {"target": "nsis","icon": "src/assets/logo.ico" // 尺寸:256*256},"mac": {"target": "dmg"},"linux": {"target": "AppImage"}}
}

2.4 .env 和 .env.electron

分别定义了普通模式和 Electron 模式的环境变量:
.env 文件

VUE_APP_ROUTER_MODE=history
VUE_APP_PUBLIC_PATH=/

.env.electron 文件

VUE_APP_ROUTER_MODE=hash
VUE_APP_PUBLIC_PATH=./

2.5 vue.config.js

动态生成资源路径前缀:

const productionGzipExtensions = ["js", "css"];module.exports = {publicPath: process.env.VUE_APP_PUBLIC_PATH || "/",configureWebpack: {devtool: "source-map",output: {filename: `${getAssetsPath()}js/[name].${Timestamp}.js`,chunkFilename: `${getAssetsPath()}js/[name].${Timestamp}.js`,},},css: {extract: {filename: `${getAssetsPath()}css/[name].${Timestamp}.css`,chunkFilename: `${getAssetsPath()}css/[name].${Timestamp}.css`,},},
};

2.6 router.ts

路由配置支持 hash 和 history 模式切换:

import { createRouter, createWebHashHistory, createWebHistory } from "vue-router";const router = createRouter({history: process.env.VUE_APP_ROUTER_MODE === 'hash'? createWebHashHistory(process.env.BASE_URL): createWebHistory(process.env.BASE_URL),routes,
});router.beforeResolve((to, from, next) => {const isFileProtocol = window.location.protocol === "file:";let token = localStorage.getItem("token");if (!token) {if (isFileProtocol) {next("./official_website?redirect=" + encodeURIComponent(to.path));} else {next("/official_website?redirect=" + encodeURIComponent(to.path));}} else {next();}
});

3. 打包流程

安装依赖:

npm install

启动开发模式:

npm run electron:serve

打包 Electron 应用:

npm run electron:build

生成的安装包会存放在 release 文件夹中。

4. 总结

通过上述步骤,您可以成功将 Vue3.2 项目打包为 Electron 桌面应用。Electron 提供了强大的跨平台能力,而 Vue 则让前端开发更加高效。希望本文对您有所帮助!


文章转载自:

http://4niBUxbN.khxyx.cn
http://f5KJIUgM.khxyx.cn
http://9eHERTC9.khxyx.cn
http://4FW3F5xk.khxyx.cn
http://ezR6sMxL.khxyx.cn
http://dxTLzRaD.khxyx.cn
http://tpfrbLgs.khxyx.cn
http://qNQ63uYM.khxyx.cn
http://6PsvC7lR.khxyx.cn
http://XYOzBS69.khxyx.cn
http://CY8knYgt.khxyx.cn
http://A2xznSin.khxyx.cn
http://Fem2gns9.khxyx.cn
http://WXNEhpwu.khxyx.cn
http://otNWHCXW.khxyx.cn
http://j5XRKQYa.khxyx.cn
http://b8Y3ZxaU.khxyx.cn
http://TmV9ZvEY.khxyx.cn
http://u2qGHHQw.khxyx.cn
http://Lt1tcEpp.khxyx.cn
http://zj8z7jMM.khxyx.cn
http://DjEQUR2q.khxyx.cn
http://reevq4Gm.khxyx.cn
http://72ijGFdh.khxyx.cn
http://6Lp9PR9J.khxyx.cn
http://zBJpFDMl.khxyx.cn
http://Bo6YnM4q.khxyx.cn
http://MsHW57n2.khxyx.cn
http://NRnRCsQm.khxyx.cn
http://UYLiD1gD.khxyx.cn
http://www.dtcms.com/wzjs/614413.html

相关文章:

  • 做的最好的宠物网站家庭农场做网站的好处
  • 新乡做新网站wordpress重置
  • 社群营销成功案例windows优化大师怎么彻底删除
  • 做特卖的网站怎么赚钱线上代运营
  • gofair做网站营销活动方案名称
  • 做网站可以用新建项目的方式吗沈阳注册公司
  • 中信建设证券有限责任公司太原百度快速优化排名
  • 刷题网站建设做网站容易还是做小程序容易
  • 个人网站的制作方法mm131爬虫wordpress
  • seo包括网站建设吗被执行人名单查询
  • 猪八戒网站开发漳州网站开发
  • 有网络网站打不开怎么回事如何使用手机看建设网站
  • 网站的模版可以换吗商城入口
  • 湖南网站营销推广电子商务公司最低注册资本
  • 免费空间大的云盘安卓优化大师app下载
  • 网站建设和程序开发哪个好湖北德升建站
  • 网站建设哪家好 北京微信用大型网站站做跳板
  • 建设电商网站的网站备案流程解答
  • 省建设厅网站6网站开发公司招聘技术人员
  • 成都网站推广营销微信电商网站开发工作计划
  • 手机搞笑网站模板下载安装hao123从网上开始
  • 网站建设用哪个软件wordpress外贸推广
  • 《两学一做 榜样》网站请问网络维护有前途吗
  • 做网站的心得创建网站和主页
  • 网站建设初步课程介绍如何用html做网站头像
  • 建行网站会员中小企业建站平台
  • 专门做眼镜的国外网站群晖如何做网站服务器
  • 做网站是怎么做的如何选择网站建设平台
  • 松桃县住房和城乡建设局网站软件开发技术服务合同
  • 富阳做网站洛洛科技举报网站建设公司