webpakc介绍

news/2024/12/26 16:07:58/

介绍

因为不确定打出的前端包所访问的后端IP,需要对项目中IP配置文件单独拿出来,方便运维部署的时候对IP做修改。

因此,需要用webpack单独打包指定文件。

CommonsChunkPlugin

module.exports = {entry: {app: APP_FILE // 入口文件},output: {publicPath: './dist/', //输出目录,index.html寻找资源的地址path: BUILD_PATH, // 打包目录filename: '[name].[chunkhash].js', // 输出文件名chunkFilename: '[name].[chunkhash].js' // commonChunk 输出文件}
}

先说一下publicPath , 这边有一个注意的点,即路径写成 ./dist 相对路径。如果写成/dist/这种绝对路径,有一个弊端是当nginx把前端的包没有放在根目录的情况下,index.html会访问资源失败。

因此推荐写成相对路径,但是当使用相对路径时,有会存在一个潜在的问题,即项目本身的路由访问如果是HTML5模式,而不是使用hash时(路由上有一个#号),那么项目一样会部署失败。

angular,react都会有这样的问题,vue没用过,应该类似。此时的解决办法是,在index.html的head中添加base标签,即:

<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"/><base href="/">
</head>

webpack本身基于模块化,因此大多数情况下,我们仅需要一个入口文件就可以搞定。而针对本次需求,需要在app,这个入口之外再添加一个入口文件。即:

 entry: {app: APP_FILE // 入口文件ip: IP_FILE
},

仅这样对webpack配置之后,dist文件会成功打出app.xxx.js及ip.xxx.js,但是打包出的项目还是会报错,解决办法是:维持IP的入口文件不变,但是把它当作commonChunk来处理。即在plugins中加入:

new webpack.optimize.CommonsChunkPlugin({name: 'ip', minChunks: Infinity}),

这样保证 优先加载ip.xxx.js,避免报错。

缺点:这样打包有一个很明显的缺点,即是打包出的文件是压缩的,不方便对文件进行二次修改。(没有找到解决压缩的办法)

CopyWebpackPlugin

最终解决办法,还是通过让ip.js这个文件脱离项目的模块化,然后在index.html中单独引用。(这是最开始就想到的解决办法,但并不是自己想要的解决方案,但无奈认知有限,没有解决掉之前的问题)。

解决流程:
首先在webpack引入CopyWebpackPlugin , 配置代码:

new CopyWebpackPlugin([{from: './src/config/ip.js', to: 'ip.js'},
])

在index.html中单独引入script标签,注意要配置一个随机后缀,即:

<script>document.write("<s"+"cript type='text/javascript' src='./dist/ip.js?"+Math.random().toString(36).substr(2)+"'></scr"+"ipt>");
</script>

防止ip.js因为缓存导致问题。

以上,就解决了webpack单独打包指定js的问题。


http://www.ppmy.cn/news/1558304.html

相关文章

Python实现机器学习驱动的智能医疗预测模型系统的示例代码框架

以下是一个使用Python实现机器学习驱动的智能医疗预测模型系统的示例代码框架。这个框架涵盖了数据收集&#xff08;爬虫&#xff09;、数据清洗和预处理、模型构建&#xff08;决策树和神经网络&#xff09;以及模型评估的主要步骤。 1. 数据收集&#xff08;爬虫&#xff09…

解决 Docker 中 DataLoader 多进程错误:共享内存不足

一、问题描述&#xff1a; 在容器化环境&#xff08;如 Docker&#xff09;中使用深度学习框架进行训练时&#xff0c;通常会使用 PyTorch 的 DataLoader 来加载数据。在使用 DataLoader 的多进程数据加载时&#xff0c;当 num_workers > 0&#xff0c;即启用多个工作进程并…

记录使用uim4的自定义头部

很离谱查官网 查啦官网和文档是在app.ts中定义headerRender就可以的 但是就是不行 结果需要一下操作 哥们 这破外应整两个小时 也是醉啦 return {logo: https://img.alicdn.com/tfs/TB1YHEpwUT1gK0jSZFhXXaAtVXa-28-27.svg,menu: {locale: false,},layout:mix,// loading:true,…

数据分析时的json to excel 转换的好用小工具

有时候获取很大的 json 内容&#xff0c; 在网页的免费转换工具中因为数据太大不让转换如下 我们可以使用简单的 python 进行转换方便阅读 import pandas as pddata {address1: 969 West Wen Yi Road, address2: Yu Hang District, city: Hangzhou, zip: 311121, country: Ch…

重温设计模式--备忘录模式

文章目录 备忘录模式&#xff08;Memento Pattern&#xff09;概述定义&#xff1a; 作用&#xff1a;实现状态的保存与恢复支持撤销 / 恢复操作 备忘录模式UML图备忘录模式的结构原发器&#xff08;Originator&#xff09;&#xff1a;备忘录&#xff08;Memento&#xff09;&…

3D视觉坐标变换(像素坐标转换得到基于相机坐标系的坐标)

在图像处理中,我们经常得到目标的坐标是像素坐标,需要将其转换到相机坐标系下的实际物理坐标。 使用场景:根据深度学习模型,已经完成了目标检测,使用3D相机,得到目标在图像中的像素坐标和深度信息,需要将2D图像中得到的像素坐标,利用深度图计算出对应目标在空间中的位姿…

AJAX与Axios

什么是 AJAX ? AJAX 是异步的 JavaScript 和 XML&#xff08;Asynchronous JavaScript And XML&#xff09;。 简单理解AJAX&#xff1a;是一种客户端与服务器进行网络通信技术&#xff0c;AJAX通常使用XMLHttpRequest 对象来发送请求和接收响应 现代开发中我们通常使用 JS…

什么是Web极简架构

极其简单Web架构&#xff08;radically simple web&#xff09;是一个面向初创企业和小型企业的 Web 应用程序蓝图&#xff1a;何使用 模块化单体Modular Monoliths、SSR、微前端Micro Frontends、HTMX 和 Tailwind CSS 跨多个领域团队构建 Web 应用程序。 本文为运行或构建跨…