Webpack打包图片-JS-Vue

news/2024/11/29 6:29:25/

1 Webpack打包图片

2 Webpack打包JS代码

3 Babel和babel-loader

5 resolve模块解析

4 Webpack打包Vue

webpack5打包 的过程:

   在webpack的配置文件里面编写rules,type类型有多种,每个都有自己的作用想要把小内存的图片转成base64图片和大内存的图片不转base64的方法就是使用parser打包之后的图片名称会被加上hash值,想要自定义图片打包之后的名字可以通过generator来设置

const path = require("path")
const { VueLoaderPlugin } = require("vue-loader/dist/index")module.exports = {entry: "./src/main.js",output: {filename: "bundle.js",path: path.resolve(__dirname, "./build"),// assetModuleFilename: "abc.png"},resolve: {extensions: [".js", ".json", ".vue", ".jsx", ".ts", ".tsx"],alias: {utils: path.resolve(__dirname, "./src/utils")}},module: {rules: [{test: /\.(png|jpe?g|svg|gif)$/,// 1.打包两张图片, 并且这两张图片有自己的地址, 将地址设置到img/bgi中// 缺点: 多图片加载的两次网络请求// type: "asset/resource",// 2.将图片进行base64的编码, 并且直接编码后的源码放到打包的js文件中// 缺点: 造成js文件非常大, 下载js文件本身消耗时间非常长, 造成js代码的下载和解析/执行时间过长// type: "asset/inline"// 3.合理的规范:// 3.1.对于小一点的图片, 可以进行base64编码// 3.2.对于大一点的图片, 单独的图片打包, 形成url地址, 单独的请求这个url图片type: "asset",parser: {dataUrlCondition: {maxSize: 60 * 1024}},generator: {// 占位符// name: 指向原来的图片名称// ext: 扩展名// hash: webpack生成的hash// 加img/可以在打包的时候创建img文件夹,把图片放到这里面filename: "img/[name]_[hash:8][ext]"}},]},plugins: [new VueLoaderPlugin()]
}

 在js里面创建img。

// 引入图片模块
import zznhImage from "../img/zznh.png"// 创建img元素
const imgEl = document.createElement("img")
imgEl.src = zznhImage
document.body.append(imgEl)// 创建div元素, 设置背景
const divBgEl = document.createElement("div")
divBgEl.classList.add("img-bg")
document.body.append(divBgEl)

webpack在打包js时候的操作:

把es6语法转成es5,需要使用babel

 

现在webpack的配置文件里面编写rules

const path = require("path")
const { VueLoaderPlugin } = require("vue-loader/dist/index")module.exports = {entry: "./src/main.js",output: {filename: "bundle.js",path: path.resolve(__dirname, "./build"),// assetModuleFilename: "abc.png"},resolve: {extensions: [".js", ".json", ".vue", ".jsx", ".ts", ".tsx"],alias: {utils: path.resolve(__dirname, "./src/utils")}},module: {rules: [{test: /\.js$/,use: [{ loader: "babel-loader", // options: {//   plugins: [//     "@babel/plugin-transform-arrow-functions",//     "@babel/plugin-transform-block-scoping"//   ]// } }]},{test: /\.vue$/,loader: "vue-loader"}]},plugins: [new VueLoaderPlugin()]
}

安装babel-loader

npm install babel-loader -D

babel-loader也一样有许多插件,于是我们也可以像postcss一样创建一个配置文件,

babel.config.js

module.exports = {// plugins: [//   "@babel/plugin-transform-arrow-functions",//   "@babel/plugin-transform-block-scoping"// ]presets: ["@babel/preset-env"]
}

下载预设的包

npm install @babel/preset-env -D

之前模块化的时候提到过node在执行import 导入模块的时候,有些文件的后缀可以不用写,这是因为在webpack的配置文件里面的resolve里面已经写好了后缀,在之后的文件也可以手动往resolve里面添加后缀 。

extensions用来自动添加后缀寻找文件(import或者export的时候)

alias用来添加路径别名的,简化后续填写的路径 __dirname是指当前项目的根目录

const path = require("path")
const { VueLoaderPlugin } = require("vue-loader/dist/index")module.exports = {entry: "./src/main.js",output: {filename: "bundle.js",path: path.resolve(__dirname, "./build"),// assetModuleFilename: "abc.png"},resolve: {extensions: [".js", ".json", ".vue", ".jsx", ".ts", ".tsx"],alias: {utils: path.resolve(__dirname, "./src/utils")}},module: {rules: []},plugins: [new VueLoaderPlugin()]
}

 

1

 

 

 

 

 

 

 

 

 


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

相关文章

nodejs+vue大学生招聘网站应聘系统设计与实现5b14b

目前,伴随着Internet技术的日益成熟,互联网需要提供更多的服务,发达国家已形成以信息技术为核心,招聘网站支撑的现代化招聘公司技术格局。这便是今天为大家所熟悉的管理信息系统,网络发展为招聘网站实现信息化、自动化、智能化和集…

C++ 里面lambda和函数指针的转换

问题说明 原始问题,代码如下会编译报错: using DecisionFn bool(*)();class Decide { public:Decide(DecisionFn dec) : _dec{dec} {} private:DecisionFn _dec; };int main() {int x 5;Decide greaterThanThree{ [x](){ return x > 3; } };retur…

【 TensorFlow】URLError: <urlopen error no host given> 错误的 有效的解决方法

URLError: 错误的 有效的解决方法😎 前言🙌错误运行截图:解决方案流程图:运行成功截图 总结撒花💞 😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!&a…

[开发|java] greenrobot.eventbus的ThreadMode说明

GreenRobot EventBus 是一个事件总线库,其中的 ThreadMode 用于指定事件处理方法在哪个线程上执行。以下是 GreenRobot EventBus 中的几种 ThreadMode: ThreadMode.POSTING:事件发布和事件处理在同一个线程上执行。即事件发布的线程会立即调用…

RocketMQ启动失败

RocketMQ启动失败 报错信息 [rootVM-16-6-centos bin]# sh mqnamesrv Java HotSpot™ 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release Java HotSpot™ 64-Bit Server VM …

数据结构基础内容-----第二章算法

文章目录 算法算法算法与数据结构算法的特性算法的设计应符合以下基本要求:函数的渐近增长 算法时间复杂度时间复杂度的平均情况和最坏情况算法空间复杂度 算法 算法 算法是指,解决问题或执行任务的一系列步骤、规则或指令的有序集合。它可以用来解决各…

搭建自己的pts性能测试平台--jmeter+influxdb+chronograf+grafana

不知道大家有没有使用过阿里的性能工具pts,详细的数据视图不要太香,唯一的缺点就是收费。那有没有类似的这种平台,让我们可以不花钱就体验相同的快感呢,答案是有的,下图中的平台就是这片文章看完操作完之后&#xff0c…

《Go专家编程(第2版)》书评

首先感谢官方的肯定,让我在【图书活动第四期】的活动中获得了《Go专家编程(第2版)》这本书,以下是从我的观点对这本书的书评 文章目录 前言书籍部分读者评价总结 前言 很高兴有机会写一篇关于《Go专家编程(第2版)》的书评。大致读…