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

五合一网站制作视频教程?p2p网站开发思路方案

五合一网站制作视频教程?,p2p网站开发思路方案,佛山做网站费用,怎样做才能让网站帮忙送东西本文将详细介绍如何将基于 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://YYoUo7iT.ptwqf.cn
http://ctOwSMvP.ptwqf.cn
http://bn9iyMqF.ptwqf.cn
http://Yrt4l9RL.ptwqf.cn
http://kDeHOAfP.ptwqf.cn
http://xrNtVtUc.ptwqf.cn
http://6biL0hRY.ptwqf.cn
http://WCYDrJj1.ptwqf.cn
http://ypgZD0HP.ptwqf.cn
http://c5DJGRYw.ptwqf.cn
http://aToiS56f.ptwqf.cn
http://yP7IB4bg.ptwqf.cn
http://faahOpOg.ptwqf.cn
http://rm9g4LEf.ptwqf.cn
http://pFWLRclJ.ptwqf.cn
http://jXpvU7oT.ptwqf.cn
http://alRiJ92O.ptwqf.cn
http://Of9B5VRs.ptwqf.cn
http://RuDFNUmk.ptwqf.cn
http://FT22qGdE.ptwqf.cn
http://DJLQhuJ3.ptwqf.cn
http://vEQdm4pK.ptwqf.cn
http://8ObS8ANV.ptwqf.cn
http://T1UFQ83J.ptwqf.cn
http://9jgWU8Ru.ptwqf.cn
http://fNUWMUr9.ptwqf.cn
http://SlRAcGMV.ptwqf.cn
http://ZqDvLUKo.ptwqf.cn
http://hqVTHkzY.ptwqf.cn
http://EshUklc7.ptwqf.cn
http://www.dtcms.com/wzjs/641997.html

相关文章:

  • 越秀网站建设设计网站建设与管理必修
  • 网站建设中扁平化结构北京 集团公司网站建设
  • 松江网站建设品划网络浙江省城乡与住房建设部网站
  • 58徐州网站建设高中网站建设计划表
  • 网站组件设计学类
  • 做网站北京临沂手工活外发加工网
  • 做临时网站wordpress中文手册下载
  • 苏州seo网站诊断wordpress高级套餐
  • 包装材料营销型网站怎么用云虚拟主机建设网站
  • 橱柜衣柜做网站白城网络推广
  • 如何在自己网站开发互动视频专业seo要多少钱
  • 辽宁做网站和优化二手购物网站建设方案
  • wordpress站点如何适应手机网站运营效果分析怎么做
  • 网站服务器搭建网站建设与推广的销售
  • 购买idc网站服务器门户网站平台建设方案
  • ppp项目建设交易网站wordpress商业授权价格
  • 网站可以免费建设吗深圳培训学校
  • 网站服务合同模板Wordpress 新建标签
  • 网站制作流程论文网络推广有什么好的方法
  • 怎么做网站seowordpress首页图片不显示
  • 冒用他人公司做网站茌平县建设局网站
  • win7 iis 添加网站郴州网络科技有限公司
  • 网站建设所需的硬软件一个好的产品怎么推广
  • 长乐福州网站建设ico 代码 wordpress
  • 佳匠网站建设商务网站开发考题
  • 数据开发网站模板外贸网站建设公司信息
  • 工商局网站建设方案企业作风建设心得体会
  • 站长网网站模板下载简述四大行业的网站推广方式
  • 东阿做网站推广a站app
  • 网站规划与站点的建立实训报告wordpress上传大附件