21_webpack_DDL
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的更多相关文章
随机推荐
- .NET Core 日志记录程序和常用日志记录框架
本文主要内容为.NET Core的日志记录程序和常使用的日志记录框架的简单使用 首先,打开VS2019新建一个ASP.NET Core Web Api项目,项目创建好后会有一个集成好的天气预报的类和控 ...
- Debug时使用热部署修改代码
今晚Debug的时候,一些语句怎么也不能debug,F8步过以下跳好多行,看起来很烦人.原来是有些行无法进入debug断点. 是因为Debug之前Tomcat已经编译Class文件,当插入注释/修改代 ...
- ubuntu安装deb时出现Unknown media type in type 'chemical/......
Unknown media type in type 'chemical/......我找到了文件/usr/share/mime/packages/chemical-mime-data.xml. 在文 ...
- Eureka 注册中心和服务提供者
什么是Eureka组件 spring cloud Eureka ,提供服务注册和服务发现的功能. 一:spring cloud Eureka Eureka Server 服务端 Eureka Clie ...
- 深入解读.NET MAUI音乐播放器项目(三):界面交互
UI设计的本质是对于产品的理解在界面中多种形式的映射,当需求和定位不同时,对相同的功能表达出了不同的界面和交互方式. 作为播放器,界面可以是千差万别的.<番茄播放器>的iOS平台上我开发了 ...
- Android:LitePal 在第一次创建表之后第二次创建新的表不生效
因为业务需求的增长,后续需要继续创建新的表,有可能代码没有任何报错,同时数据库也没有任何新的表加入进来. 修改 litepal.xml 的 version,如果之前是 1,那么修改为 2,总之比之前 ...
- sqlite3数据库Linux 系统移植和使用
sqlite3数据库是一个小型的数据库,当数据量不大,要求不是特别高的时候,是个不错的选择. 在Linux上移植和使用也非常的方便. 本示例是在硬件全志r528 .linux5.4 上验证的. 移植操 ...
- 路飞项目使用mysql数据库详细讲解
目录 一.首先需要彻底删除原有的数据库步骤 二.去官网下载mysql步骤 三.安装mysql数据库步骤 四.一管理员身份进去cmd进行一系列命令启动 五.接下来为路飞项目创建数据库 六.luffy项目 ...
- odoo Web Controllers 学习总结
环境 odoo-14.0.post20221212.tar Web Controllers Controllers 控制器需要提供可扩展性,就像Model,但不能使用相同的机制,因为先决条件(已加载模 ...
- Oracle 11g 单机服务器ASM部署
Oracle oracle,相比都有所了解,是一家企业级的数据库公司(收费),上图是oracle官网,也是对外的服务平台 oracle有自己独特的安装方式:ASM : 自动存储管理(ASM,Au ...