Electron-Vue 开发下 dev/prod/webpack server各种路径设置汇总

背景

在实际开发中,我发现团队对于这几个路径的设置上是纯靠猜的,通过一点点地尝试来找到可行的路径,这是不应该的,我们应该很清晰地了解这几个概念,以下通过截图和代码进行细节讲解。

npm run dev 下的路径如何处理?

  1. 我们要搞明白 npm run dev 在干什么?

    1. 这个过程使 webpack 启动了一个本地 http 服务,什么是 http 服务,就是你可以通过 url 的方式(http://loclahost:9080/xxxx) 来获取具体的资源文件,例如 http://localhost:9080/index.html 要获取 index.html 这个服务就会根据逻辑去提取 index.htm 数据并输出出去

    2. 上面的 index.html 是放在内存里面的,webpack 在 run dev 时,会先根据 webpack.xxxx.config.js 配置文件进行打包,但是这个打包结果并不放在硬盘上,而是放在内存里,最终也是要打包成 index.html + index.js(这个就是一堆源码打包的最终 js)

  1. webpack dev server 这个 http 服务会同时监听源码入口引入的其他模块代码,只要这些代码有改变,那么 webpack 就会重新打包 index.js

  1. 例如__static 路径是在 webpack.xxxxx.config.js 进行配置的

  1. 这里要记得渲染进程和主进程是两个独立进程,它们分别都有自己的 webpack.xxxx.config.js 文件,因此两者的__static 设置的可能并不相同

npm run build 时的路径

  1. npm run build 时是生产环境下的命令

  2. 生产会把代码都打包到 dist 路径下,后续运行的也不是 webpack dev server http 服务来启动,这时 index.html 下可以定义一些路径

  1. 因为渲染进程是以 src/index.ejs 作为 index.html 生成模板的,所以 index.ejs 最终打包的位置就是__dirname 的位置,如果你想找到 dist/electron/static 则是需要上翻 3 层,就到了 static,这样后续 index.js 使用全局_static 就能很方便地找到 static 路径了

  2. 如果你需要找 dist/ 的话,那需要上翻 4 层,以此类推

  1. 针对不同的渲染进程,你可以配置不同的模板,来定义自己的__static

webpack dev server 的 static 是啥?

  1. 这里的 static 并不是一个具体目录的名字,这是一个配置 key,这个 key 的意思是 dev server http 服务启动后,除了从打包根路径 dist/electron/renderer/pages/main/ 访问 index.html 和 index.js 文件外,当访问一张图片时,dev server 服务去哪里找呢?我们从下面的这个配置就知道是项目根目录下找,这里是个数组,你可以配置多个资源文件路径,也即意味着可以在多个目录下找资源文件

  2. 这里的意思是当你访问/static/imgs/logo.png,那就是从根目录下访问这个 logo.png,生产环境

  1. 下面就是__static 就是绝对路径, dev 环境下 http://localhost:9080/static/imgs/logo.png

  2. 对于 vue 文件中直接访问的图片 如 img src=“../../logo.png”,这个 webpack 并不处理,因为它不知道怎么处理,dev 环境下就是根据配置的资源文件路径下找,但是 prod 环境下,就靠你拷贝具体的资源文件夹到何时的路径了

  3. file-loader/url-loader 主要是处理哪些显式引入的,且能正确定位位置的资源文件,将其选择是否 base64 集成或者迁移到打包后的文件下的 imgs/* 下

preload.js 和 inject.js 文件的引入

  1. 你不能引用源码的入口文件 index.js,原因是源码的入口文件还没有打包呢,你引进这个源码 index.js 就是引入 index.js,不是把所有 index.js 引入的其他代码都引入了(没有任何机制在帮你做这件事)

    1. 你可以用 webpack dev server 起一个服务,来单独打包这个 js,然后对外输出,你就可以引入 localhost:9080/preload.js,这样是否支持热更,不得而知

  2. 因此,你必须直接引打包完成的 dist/electron/preload/web/whatsapp/preload.js 这个文件,这个文件是整合好的,引入就全引入了

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

devops和ICCID简介

Devops DevOps(Development 和 Operations 的组合)是一种软件开发和 IT 运维的哲学,旨在促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它强调自动化流程,持续集成(CI&#xf…

[HNCTF 2022 Week1]baby_rsa

源代码: from Crypto.Util.number import bytes_to_long, getPrime from gmpy2 import * from secret import flag m bytes_to_long(flag) p getPrime(128) q getPrime(128) n p * q e 65537 c pow(m,e,n) print(n,c) # 62193160459999883112594854240161159…

12.19问答解析

概述 某中小型企业有四个部门,分别是市场部、行政部、研发部和工程部,请合理规划IP地址和VLAN,实现企业内部能够互联互通,同时要求市场部、行政部和工程部能够访问外网环境(要求使用OSPF协议),研发部不能访问外网环境…

生态学研究中,森林生态系统的结构、功能与稳定性是核心研究

在生态学研究中,森林生态系统的结构、功能与稳定性是核心研究内容之一。这些方面不仅关系到森林动态变化和物种多样性,还直接影响森林提供的生态服务功能及其应对环境变化的能力。森林生态系统的结构主要包括物种组成、树种多样性、树木的空间分布与密度…

springboot445新冠物资管理(论文+源码)_kaic

摘 要 使用旧方法对新冠物资管理的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在新冠物资管理的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的新冠物资管…

1.zabbix概述

一、什么是监控 我们的生活里,离不开监控,监控能够最大程度上,发挥如下作用 实时监测,即使你不在电脑前,也能实时掌握监控区域情况,提高工作效率事后录像查询,如果不法事件未能即使发现制止&am…

QT绘图【点】【线】【圆】【矩形】

目录 1. 绘制点、线、圆、文本、矩形3. 调用及更新 1. 绘制点、线、圆、文本、矩形 QPainter painter(this); //实例化绘图 QPen pen(QColor(255,100,155)); //创建绘图工具(画笔) pen.setWidth(2); //画笔宽度 pen.setStyle(Qt::SolidLine); //实线…

知识分享第三十天-力扣343.(整数拆分)

343 整数拆分 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: 10 输出: 36 解释: 10 3 3 4, 3 3 4 36。 说明: 你可…

NSDT 3DConvert:高效实现大模型文件在线预览与转换

NSDT 3DConvert 作为一个 WebGL 展示平台,能够实现多种模型格式免费在线预览,并支持大于1GB的OBJ、STL、GLTF、点云等模型进行在线查看与交互,这在3D模型展示领域是一个相当强大的功能。 平台特点 多格式支持 NSDT 3DConvert兼容多种3D模型…

USACO备考书籍合集

USACO,全称United States of America Computing Olympiad,即美国计算机奥林匹克竞赛。 以下是网上查到的关于USACO(美国计算机奥林匹克竞赛)的推荐书籍: 一、国内推荐书籍 有一种观点,冲击USACO铂金&…

汽车IVI中控开发入门及进阶(三十八):HiCar开发

手机投屏轻松实现手机与汽车的无缝连接,导航、音乐、通话等功能应有尽有,还支持更多第三方应用,让车载互联生活更加丰富多彩。 HiCar在兼容性和开放性上更具优势。 手机投屏可以说是车机的杀手级应用,大大拓宽了车机的可用性范围。其中华为推出的HiCar就是非常好用的一种。…

iOS - 超好用的隐私清单修复脚本(持续更新)

文章目录 前言开发环境项目地址下载安装隐私访问报告隐私清单模板最后 前言 在早些时候,提交应用到App Store审核,大家应该都收到过类似这样的邮件: Although submission for App Store review was successful, you may want to correct th…

CSS边框的样式

边框阴影 让元素更有立体感 img {box-shadow: 2px 10px 5px 20px #ff0000;border-radius: 44px;}语法:box-shadow:值1 值2 值3 值4 值5 值1:水平阴影的位置值2:垂直阴影的位置值3:模糊距离值4:阴影的尺寸…

UE5 物体自动跟随主角镜头转向

A、思路 Tick,设置物体世界旋转 旋转数值源于物体自身位置与玩家摄像机位置的差值 效果是物体自动转向,玩家镜头动,则物体也随之调整角度。 适合一些提示文字,如按键提示、帮助之类。 B、参考图

C 语言数据类型详解

目录 一、引言 二、基本数据类型 (一)整型 (二)浮点型 (三)字符型 三、构造数据类型 (一)数组 (二)结构体 (三)联合体&#…

《通信电子电路》入门手册

因为大学这门课好多同学理解不了这门课 于是考完试后花了两天时间整理了这份笔记,在这分享给完全没有学懂这门课的同学,也帮助“理解概念才能学得进去”的同学入门 笔记:通信电子电路 入门手册 —— flowus笔记 对应:《通信电子…

vscode远程服务器运行Jupyter文件时一直无法运行

问题: 在vscode运行jupyter时一直让我选择python版本,选择了之后又没有反应,如下所示: 原因: 服务器上没有安装Jupyter;解决: 运行pip install jupyter 进行安装(或者其他的方式也可…

鸿蒙项目云捐助第十七讲云捐助我的页面上半部分的实现

鸿蒙项目云捐助第十七讲云捐助我的页面上半部分的实现 在一般的应用app中都会有一个“我的”页面,在“我的”页面中可以完成某些设置,也可以完成某些附加功能,如“修改密码”等相关功能。这里的鸿蒙云捐助也有一个“我的”功能页面。这里对“…

网络安全(3)_安全套接字层SSL

4. 安全套接字层 4.1 安全套接字层(SSL)和传输层安全(TLS) (1)SSL/TLS提供的安全服务 ①SSL服务器鉴别,允许用户证实服务器的身份。支持SSL的客户端通过验证来自服务器的证书,来鉴别…

【ArcGIS Pro】水文水资源、水生态与水环境

ArcGIS Pro 是一款集数据采集、处理、分析和可视化于一体的强大 GIS 工具,广泛应用于水文、水资源、水生态和水环境等领域。其全面的功能使得研究人员能够高效地处理各种水文和环境数据,从而为科学研究和决策支持提供强有力的技术保障。在水文分析方面&a…