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",
}),

21_webpack_DDL的更多相关文章

随机推荐

  1. Jest + React 单元测试最佳实践

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 前言 单元测试是一种用于测试"单元"的软件测试方 ...

  2. IDEA新手使用教程【详解】

    IDEA是一款功能强悍.非常好用的Java开发工具,近几年编程开发人员对IDEA情有独钟. Intellij Idea使用技巧总结 1.如何设置通过鼠标滑轮改变编辑器字体大小 2.如何设置自动导包功能 ...

  3. 【python自动化测试】1- python基础和pycharm使用

    python基础和pycharm使用 1.pycharm 1.1 为特定格式文件添加头信息 File--Settings--Editor--File and Code Templates--Pytho ...

  4. 基于官方Chrome、Firefox软件包得到便携版

    1. 前言 安装好操作系统后,一般系统都带有浏览器,比如,Windows 10 自带Edge.Ubuntu 自带Firefox等等.有的时候我们想使用一下别的浏览器或者是别的版本(如,开发者版),可是 ...

  5. echarts 各个配置项详细说明总结

    theme = { // 全图默认背景 // backgroundColor: 'rgba(0,0,0,0)', // 默认色板 color: ['#ff7f50','#87cefa','#da70d ...

  6. gmlib密码算法库

    gmlib密码算法库 一.gmlib密码算法库简介 支持国密 SM4/AES-ECB/CBC/GCM,SM3,SM2签名/加密,ZUC算法 的密码库,文档页面GMLib Docs ,项目地址 gmli ...

  7. SAP SPOOL_INTERNAL_ERROR

    运行SE38程序 RSPO0041

  8. 查询自增ID断点的地方

    方法一 SELECT id+1 AS ID FROM table WHERE id+1 not in (SELECT id FROM table);

  9. Shiro+SpringBoot前后端分离中跨域,sessionId,302问题

    1.解决跨域 @Configuration public class CorsConfig { public CorsConfiguration buildConfig() { CorsConfigu ...

  10. java学习日记20230228-变量

    JAVA变量 变量是程序的基本组成单位 变量的3要素:类型 名称 值 int a = 1:定义了一个变量 int整数类型,名称为a,值为1 内存里面分配个空间,空间里的值为1 变量相当于 内存中一个数 ...