DLL库(不再使用)

DLL全称是动态链接库(Dynamic Link Library),是为软件在Windows中实现共享函数库的一种实现方式

webpack中也有内置DLL的功能,它指的是我们可以将可以共享,并且不经常改变的代码,抽取到一个共享的库

整个库在之后编译的过程中,会被引入到其他项目的代码中

DLL库的使用分成两步
  第一步:打包一个DLL库
  第二步:项目中引入DLL库

在升级到webpack4之后,React和Vue脚手架移除了DLL库

打包DLL库

const webpack = require("webpack");
const path = require("path");
// 主要代码
const TerserPlugin = require("terser-webpack-plugin"); module.exports = {
// 主要代码
entry: {
vue: "vue",
},
// 主要代码
output: {
path: path.resolve(__dirname, "./dll"),
filename: "dll_[name].js",
// 暴露出的全局变量名
// 主要是给DllPlugin中的name使用,这里要和DllPlugin的name保持一致
library: "dll_[name]",
},
optimization: {
minimizer: [
new TerserPlugin({
extractComments: false,
}),
],
},
plugins: [
// 主要代码
new webpack.DllPlugin({
// //必填,不然在web网页中找不到 'dll_[name]',会报错
context: __dirname,
name: "dll_[name]",
path: path.resolve(__dirname, "./dll/[name].manifest.json"),
}),
],
}; /*
const VueLoaderPlugin = require("vue-loader/lib/plugin");
module: {
rules: [
{
test: /\.vue/,
use: "vue-loader",
},
],
}, */

DLL使用

新建一个项目,在项目中还需要npm i vue 因为不下载vue包,你在js文件import引入会有问题

如果我们在代码中使用了Vue,我们有配置splitChunks的情况下,它会进行分包,打包到一个独立的chunk文件中

但是现在我们有了dll_vue,不需要单独去打包他们,可以直接去引用dll_vue即可

第一步:通过DllReferencePlugin插件告知要使用的Dll库

  plugins: [
new webpack.DllReferencePlugin({
manifest: resolveApp("./dll/vue.manifest.json"),
// // AutoDllPlugin 的 context 必须和 package.json 的同级目录,要不然会链接失败,和DllPlugin的context路径对应起来
context: resolveApp("./"),
}),
],

第二步:通过AddAssetHtmlWebpackPlugin插件,将我们打包的Dll库引入到Html模板中

npm i add-asset-html-webpack-plugin -D

// 复制文件资源,并且在index.html中对资源进行引入
const AddAssetHtmlWebpackPlugin = require("add-asset-html-webpack-plugin");

new AddAssetHtmlWebpackPlugin({
filepath: resolveApp("./dll/dll_vue.js"),
outputPath: "auto",
}),

最新文章

  1. Tomcat - SSL操作大全
  2. jQuery corner 圆角插件
  3. 集合框架学习笔记<三>
  4. python playfair
  5. Apache 配置 Basic 认证
  6. MySql的Delete、Truncate、Drop分析
  7. (十二)学习CSS之box-sizing 属性
  8. iOS开发UI篇—UITabBarController生命周期(使用storyoard搭建)
  9. 让你一分钟认识电子身份验证系统EID
  10. 关于pthread里面一些函数的使用心得!
  11. BS导出csv文件的通用方法(.net)
  12. Centos7(Linux)网络配置,自动获取ip地址
  13. 杭电ACM2012--素数判定
  14. 【模块04-大数据技术入门】02节-HDFS核心知识
  15. python爬虫中scrapy框架是否安装成功及简单创建
  16. 20165234 《Java程序设计》第三周学习总结
  17. mvc中文件上传下载
  18. Vue + Element UI 实现权限管理系统 前端篇(四):优化登录流程
  19. python爬虫 scrapy3_ 安装指南
  20. GBDT理解

热门文章

  1. redis-07主从复制
  2. 6、Collections工具类
  3. 学习Java Day16
  4. 点击获取Cesium中加载的3DTile模型的属性信息(二)
  5. Postman操作指南
  6. 以docker方式部署的redis键值查询及清理
  7. JZOJ 5355. 【NOIP2017提高A组模拟9.9】保命
  8. HTTP/2 VS HTTP/3
  9. LeetCode-1705 吃苹果的最大数目
  10. centos7 开机自启动脚本