【教程】将Vue项目打包为exe项目的教程-我的第一个原生Vue项目

news2024/12/23 17:42:44

文章目录

    • 前言
    • 项目介绍
    • 正文:Vue打包exe过程及注意事项
        • 1. (重要)进入我们自己的项目,修改公共路径为相对路径
        • 2. (重要)关于VueRouter的必要修改
        • 3. 前端打包
        • 4. 拉取`electron-quick-start`项目
        • 5. 修改配置文件
        • 6. 启动项目
        • 7. 安装打包依赖
        • 8. 修改配置文件
        • 9. 打包!
    • 致谢

前言

最近给朋友写了个客户Web端的点餐系统,觉得如果是Web端的话有诸多不便,因此将该项目打包成了Windows可执行文件,在这里记录一下。

打包后的项目运行如下(由于担心Gif大小有限,一些细节无法展示,大家将就看下吧):

Gif

项目介绍

项目背景:甲方(我的朋友)的爸爸开了一家店,但是综合考虑觉得美团等点单系统较贵,所以想开发一个点单系统。叔叔我也认识,正好想练手一下CSS,所以无偿开发啦~

项目需求:甲方只给了一句话“要一个点单系统”,其它的UI等全是自己便开发边修改的,功能也是一边开发一边追加。

UI:模拟了一下“新拟态”风格,觉得这种风格很好看!

技术栈:Vue2、JS、CSS3、Spring Boot、MyBat、MySQL等

这个项目十分简单,只有一个页面(后面还会继续追加功能),但是却是我的第一个原生Vue项目(没有用任何UI、纯CSS),所以还是满满的成就感。

因为是给朋友写的,且目前还不是很成熟,暂时不准备开放源码,等项目继续完善一段时间后会考虑进行开放(大家点点关注啦~要是粉丝量多我直接开!)




正文:Vue打包exe过程及注意事项


1. (重要)进入我们自己的项目,修改公共路径为相对路径

如果是Vue3项目的话,可以在项目目录下执行vue ui,在浏览器进入控制面板后,进行如下修改:

在这里插入图片描述

如果是Vue2或webpack项目,可以在项目根目录下创建vue.config.js文件,并在文件内添加如下内容:

module.exports = {
    lintOnSave: undefined,
    // 下面一行一定要有
    publicPath: './',
    outputDir: undefined,
    assetsDir: undefined,
    runtimeCompiler: undefined,
    productionSourceMap: undefined,
    parallel: undefined,
    css: undefined
}

这一部分的修改并不是直接插入进入就可以,如果你本身使用了vue.config.js文件做代理之类的,那么你可以直接将publicPath: './'粘贴到module.exports={}中去,就比如我的文档内容如下:

let proxy={}

proxy['/']={
    // WebSocket
    ws:false,
    // Target
    target:'http://127.0.0.1:8080',
    // Header: Host -> Target
    changeOrigin:true,
    // 不重写请求地址
    pathRewrite: {
        '^/': '/'
    }
}

module.exports={
    devServer:{
        host:'localhost',
        port:3000,
        proxy: proxy
    },
    lintOnSave: false,
    publicPath:'./'
}




2. (重要)关于VueRouter的必要修改

如果你的项目使用了VueRouter,那么切记:VueRouter一定不能是History模式

如果你的VueRouter采用的是History模式或不确定,可以打开/router/index.js文件,检查是否有以下原代码,如果有请进行修改:

/* 原代码 */
const router = new VueRouter({
   mode: 'history',
   base: process.env.BASE_URL,
   routes
 })


/* 修改后 */
const router =  new VueRouter({
  mode: 'hash',
  routes: routes
})

这一步骤是为了将Router修改为hash模式,如果不修改的话打开APP后将会只看一个空白的页面,那是public下的index.html文件中的body




3. 前端打包

在项目根目录下,执行以下命令进行打包:

npm run build

打包结束后,项目根目录下会出现一个dist文件夹,这就是打包完成后的内容,留着一会儿要用。




4. 拉取electron-quick-start项目

在任意目录下,执行以下命令拉取electron-quick-start项目示例代码:

git clone https://github.com/electron/electron-quick-start 

拉取成功后,我们进入electron-quick-start文件夹,删除里面的index.html文件,并将我们刚才打包得到的dist文件夹拷贝到当前目录下。




5. 修改配置文件

我们在electron-quick-start文件夹下,打开main.js文件,并做如下修改:

/* 修改前 */
mainWindow.loadFile('index.html')

/* 修改后 */
mainWindow.loadFile('./dist/index.html')




6. 启动项目

在electron-quick-start文件夹下,执行以下两条命令:

// 国内网络下载electron可能很慢,建议设置
// npm config set registry https://registry.npm.taobao.org/
// npm config set ELECTRON_MIRROR http://npm.taobao.org/mirrors/electron/


npm install
npm run start

两条命令都执行结束后,就可以看到一个窗口,这个是打包预览,如果没有问题的话就可以继续向下执行了,如果有问题请仔细检查第一步与第二步。




7. 安装打包依赖

如果步骤6没有问题,就可以(在electron-quick-start文件夹下)执行以下命令安装打包所需的依赖了:

npm install electron-packager --save-dev 




8. 修改配置文件

在electron-quick-start文件夹下,打开package.json文件,如下添加一行内容:

"scripts": { 
"start": "electron .", 
"packager": "electron-packager ./ App --platform=win32 --arch=x64 --overwrite"//此处为添加的内容
} 

如果你想修改最后打包出来的exe文件图标,类似于favicon,或者EXE的名字,可以设置 packager 的指令内容为,icon的路径自己调整下哦,更多配置内容请查阅文档:

"packager": "electron-packager ./ YOUR_APP_NAME --platform=win32 --arch=x64 --icon=./dist/favicon.ico --overwrite" 




9. 打包!

历经重重,终于来到了打包步骤,在electron-quick-start文件夹下,执行以下命令:

npm run packager 

命令执行结束后,就会多出来一个文件夹,进入文件夹,双击xxx.exe就可以启动你的项目啦~




致谢


非常感谢知乎网友Chuion的文章,本文是在参考其文章的基础上增加了一些自己遇到的问题以及解决方案,再次感谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1597833.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【高阶数据结构】哈希表 {哈希函数和哈希冲突;哈希冲突的解决方案:开放地址法,拉链法;红黑树结构 VS 哈希结构}

一、哈希表的概念 顺序结构以及平衡树 顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系。因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N);平衡树中为树的高度,即O(log_2 N)&#xf…

【python】项目实战

启动一个项目对于新手都是不容易的事情 在哪 对于Windows平台,打开cmd 使用命令py -0p 【其中0是零】 显示已安装的 python 版本且带路径的列表 切换python3命令 在Windows下,可以使用cmd下使用mklink命令创建“软链接”更好一些。 例如&#xf…

weblogic oracle数据源配置

在weblogic console中配置jdbc oracle数据源 1. base_domain->Service->DataSources 在Summary of JDBC Data Sources中,点击New, 选择【Generic Data Source】通用数据源。 2. 设置数据源Name和JNDI name 注:设置的JNDI Name是Java AP中连接…

正则匹配密码 - 使用正向先行断言

代码 import redef password_is_ok(password: str) -> bool:"""1. 密码只能是字母数字组合2. 密码必须包含大小写字母以及数字"""result re.findall(^(?.*\d)(?.*[a-z])(?.*[A-Z])[0-9a-zA-Z]{8,16}$, password)return True if result e…

HCIP的学习(9)

OSPF的接口网络类型 ​ OSPF的接口在某种网络类型下的工作方式。 网络类型OSPF接口的工作方式BMABroadcast;可以建立多个邻居关系。需要进行DR选举。hello 10S;dead 40S。P2PP2P;只能建立一个邻居关系,不需要进行DR选举。Hello …

语音智能客服机器人有什么优势?ai机器人部署

人工智能技术的进步,在不断的革新我们的工作和生活,同时,拥有人工智能技术的语音智能客服机器人在销售行业的工作熟悉程度也越来越好,那语音智能客服机器人有什么优势?我们一起来看看。 1、ASR语音文本转换 客户可通过…

量子城域网系列(四):几种典型的量子密钥分发网络组网方案

通过之前的文章,我们对点对点的量子保密通信网络有了直观的认识,也知道了量子保密通信系统就是利用量子密钥分发产生的无条件安全量子密钥作为系统安全性保证。所以在实际应用中,一个通信网络如果想实现量子加密,就需要建设量子密…

计算机网络3——数据链路层1

文章目录 一、介绍1、基础2、内容 二、数据链路层的几个共同问题1、数据链路和帧2、三个基本问题1)封装成帧2)透明传输3)差错检测 三、点对点协议 PPP1、PPP协议的特点1)PPP 协议应满足的需求2)PPP 协议的组成 2、PPP协…

Redis入门到通关之ZSet命令

文章目录 ⛄概述⛄常见命令有⛄RedisTemplate API❄️❄️ 向集合中插入元素,并设置分数❄️❄️向集合中插入多个元素,并设置分数❄️❄️按照排名先后(从小到大)打印指定区间内的元素, -1为打印全部❄️❄️获得指定元素的分数❄️❄️返回集合内的成员个数❄️❄…

6. Django 深入模板

6. 深入模板 6.1 Django模板引擎 Django内置的模板引擎包含模板上下文(亦可称为模板变量), 标签和过滤器, 各个功能说明如下: ● 模板上下文是以变量的形式写入模板文件里面, 变量值由视图函数或视图类传递所得. ● 标签是对模板上下文进行控制输出, 比如模板上下文的判断和循…

SpringCloud之LoadBalancer负载均衡器的简单使用

SpringCloud之LoadBalancer负载均衡器的简单使用 loadbalancer用于对提供服务的集群做一个节点的选取规则。 如图所示&#xff0c;load balancer集成在调用方 示例 创建loadbalance-base模块,并引入相关依赖 <dependencies><dependency><groupId>org.spr…

SVN泄露(ctfhub)

目录 下载安装dvcs-ripper 使用SVN 一、什么是SVN&#xff1f; 使用SVN能做什么&#xff1f; 二、SVN泄露&#xff08;ctfhub&#xff09; SVN源代码漏洞的主要原因&#xff1a; 工具准备&#xff1a;dirsearch、dvcs-ripper 网络安全之渗透测试全套工具篇&#xff08;内…

GPT的使用

个人笔记&#xff08;整理不易&#xff0c;有帮助点个赞&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 个人随笔&#xff1a;工作总结随笔_8、以前工作中都接触过哪些类型的测试文档-CSDN博客 网站sms-activate.or…

Qt配置外部库(Windows平台)

这里以C的外部库nlopt为例子来示范&#xff0c;右键工程选择添加库&#xff0c;然后选择库文件的目录&#xff08;dll.a&#xff09;&#xff0c;会自动设置好包含路径&#xff08;一般是include的目录&#xff09;&#xff0c;添加库&#xff08;最下面一行&#xff09; &…

【Linux项目自动化构建工具-make/Makefile】

目录 背景快速查看项目清理原理 依赖关系原理 背景 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的规则来指定&#xff0c…

MXXE利用XXE漏洞快速获取服务器敏感文件工具

https://github.com/MartinxMax/MXXE 关于 MXXEV1.2升级版,快速获取服务器敏感文件 获取Windows服务器敏感文件 把数据包复制到payload.txt进行自动注入 $ python3 MXXE.py -lh 10.10.16.5 -user Daniel -server windows 幸运的是我们找到了服务器的私匙 获取Linux服务器敏感…

Eigen笔记2:矩阵拼接

直接贴代码吧&#xff0c;使用的MatrixXd 和<<运算符&#xff1a; int main(int argc, char *argv[]) {Eigen::MatrixXd B(2, 2);B << 1, 2,3, 4;Eigen::MatrixXd C(2, 2);C << 5, 6,7, 8;Eigen::MatrixXd D(2, 2);D << 9, 10,11, 12;Eigen::MatrixXd…

光电传感器的工作原理简介

光电传感器是一种利用光电效应将光信号转换为电信号的传感器。 工作原理 光照射&#xff1a;光电传感器通过光源&#xff08;如LED或激光&#xff09;照射在其表面。 光电转换&#xff1a;光线与传感器材料发生光电反应&#xff0c;产生电信号。这种转换过程涉及到光子与电子的…

基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 VIVADO2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer: // // Design Name: // …

PMAlign模板匹配工具

PMAlign模板匹配工具 PMAlign工具介绍: PMAlign 编辑控件为 CogPMAlignTool,及其组件提供图形用户界面&#xff0c;此工具可用于训练模板&#xff0c;然后使用在连续的输入图像中搜索模板。可指定执行模板训练或模板搜索时要使用的 算法类型&#xff0c;并可选择利用图像还是…