19_webpack_externals
假如我们购买了CDN服务器为我们的网站的访问速度进行优化,那么我们,该如何配置
假如我的CDN为:https://mr-hou88888/cdn/那么publicPath该如何配置
1.配置publicpath
output: {
path: resolveApp("./build"),
filename: "[name].[contenthash:6].bundle.js",
chunkFilename: "[name].[contenthash:6].chunk.js",
publicPath: "https://mr-hou88888/cdn/",
},
第三方库的CDN
通常比较出名的开源框架,都会把源码放到一些比较出名的、免费的CDN服务器上
国际上:unpkg、JSDelivr、cdnjs
国内:bootcdn
如:我们的dayjs和lodash我们并没有直接引用他们的cdn,而是直接一起打包build文件夹中去,然后全部部署到自己的服务器中,相当于使用到的第三方的代码,放到了自己的服务器中去
我们可以找到这些第三方库,配置一个属性extemals忽略哪些库是不进行打包的,然后给index.html配置两个cdn的地址(lodash,dayjs)
externals: {
// 库中暴露出来的全局对象
//key:代表忽略的框架的名称(忽略从webpack 导入的库的名称(import "lodash") 不会再对其进行打包)
//value:从CDN地址请求下来的js中提供对应的名称
lodash: "_",
dayjs: "dayjs",
},
当你这么设置完成之后,执行npm run build你就会发现build文件夹下没有vender这个文件了
我们的代码现在是不能正常运行的
我们需要在index.html中自己配置上cdn

但是,在我们开发环境下就没有必要去设置cdn加速了,加载的速度还没有在我们自己主机上快呢
所以我们把externals的配置放到production中
然后在我们的index.html模板中,那两个script标签,我们怎么让他区分生产环境,让他只有在生产环境的时候才去加上那两个script代码
我们可以使用模板引擎的ejs语法,因为index.html是一个ejs模板,ejs模板在解析的时候,是会使用node环境的
<!-- Definel -->
<!-- ejs中的if判断 -->
<% if(process.env.NODE_ENV==='production'){ %>
<script src="https://unpkg.com/dayjs@1.8.21/dayjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
<%}%>
19_webpack_externals的更多相关文章
随机推荐
- 样本熵(SampEn)的C/C++代码实现与优化
正文 本文不介绍什么是样本熵,具体推荐看此文https://blog.csdn.net/Cratial/article/details/79742363,写的很好,里面的示例也被我拿来测试代码写的对不 ...
- 【TS】object类型
object是一个对象,在ts中定义对象类型的语法为:let 变量名 :object = { } 在object类型中,对象内部定义的值是不受类型约束的,只要是一个object类型即可,例如: let ...
- 使用命名行指令去运行和打包.net6项目
如何使用命名行指令去运行和打包.net6项目 前言 之前发布了一个.net webApi入门项目,项目文章,在文章中我推荐的是Docker部署,只说明了如何打包,但是没有说怎么运行,考虑到很多人写代码 ...
- [java安全基础 02]反射
java反射 这一篇和上一篇对不上,这里是补一下java反射知识点 一个需求引出反射 请根据配置文件re.properties指定信息,创建Cat对象并调用方法hi classfullpath=com ...
- 使用IDM从Google 云端硬盘链接上下载超大文件
1.将原始文件以快捷方式存放到自己的网盘中. 2.进入自己的网盘,找到存放好的目标文件快捷方式,点击右键,选择下载. 3.如果电脑上IDM且浏览器装有IDM插件,会弹出下载框,点击下载即可. 4.然后 ...
- linux配置两个不同网段的ip and linux批量添加连续IP
转载csdn: centos 下批量添加连续IP_cdefg198的专栏-CSDN博客_centos批量添加ip 转载csdn: linux配置两个不同网段的ip_子曰小玖的博客-CSDN博客_lin ...
- 网络配置:Netplan
Netplan 新出的Ubuntu服务器18.04版本修改了IP地址配置程序, Ubuntu和Debian的软件架构师删除了以前的ifup/ifdown命令和/etc/network/interfac ...
- DESIR队列:早期axSpA的脊柱放射学进展
DESIR队列:早期axSpA的脊柱放射学进展 EULAR2015; PresentID: FRI0234 SPINAL RADIOGRAPHIC PROGRESSION IN EARLY AXIAL ...
- OpenSCAD:一款用于创建实体3D CAD对象的软件
推荐:使用 NSDT场景设计器 快速搭建 3D场景. 原文链接:https://www.mvrlink.com/openscad/ OpenSCAD是一个用于创建实体3D CAD对象的软件.它是免费软 ...
- Socket.io + Knex 实现私聊聊天室
前言 本文只介绍实现的核心代码,目的是记录和分享知识.若感兴趣可以往下看,在文章最后贴上了仓库地址.前端使用 Vite + Vue3:后端使用 Knex + Express. Room 的概念 私密 ...