webpack基本配置(二)--url和babel

本文详细介绍了如何使用Webpack配置url-loader处理图片和字体图标,以及如何通过Babel配置处理高级ES6和ES7语法。涵盖了loader配置、babel-loader使用、插件和预设的安装与配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置url的loader

在页面上引用图片

  • 安装npm i url-loader file-loader -D
  • 打开webpack.config.js配置文件
{test:/\.(jpg|png|gif|bmp|jpeg)$/,use:'url-loader?limit=91560'}//处理图片路径的loader
// limit给定的值是图片的大小,单位是byte。如果引用的图片大于给定的limit值,则不会被转为base64格式的字符串,如果图片小于或等于给定的limit值,则会被转为base64字符串
//此时我的图片大小是91560byte的

当图片小于或等于给定的limit值时:
在这里插入图片描述当图片大于给定的limit值时:(此时地址为hash值)
在这里插入图片描述
若要保存原有图片名称,则:

{test:/\.(jpg|png|gif|bmp|jpeg)$/,use:'url-loader?limit=91560&name=[name].[ext]'}

效果如下:
在这里插入图片描述
图片路径为根目录下,虽然我们看不见,在内存中
在这里插入图片描述

问题:若放置了两张同名图片(分别在两个images文件夹中),则第二张会覆盖第一张,导致显示两张一样的图片

在这里插入图片描述

  • 解决:为图片url再填上几位hash值但同时又保留原来的名字
{test:/\.(jpg|png|gif|bmp|jpeg)$/,use:'url-loader?limit=91559&name=[hash:8]-[name].[ext]'}

在这里插入图片描述

在页面上引用字体图标

  1. 引用bootstrap npm i bootstrap -S
  2. 在main.js中引入
// 引入bootstrap
import 'bootstrap/dist/css/bootstrap.css'
  1. 配置webpack.config.js
{test:/\.(ttf|eot|svg|woff|woff2)$/,use:'url-loader'}

注意:json文件中不能写注释,并且每次修改完配置文件后应该重新开启终端

babel的配置

在webpack中默认只能处理一部分ES6新语法,在一些更高级的ES6语法或ES7语法,webpack是处理不了的,此时用babel即可

例如在main.js中:

	// class关键字,是ES6中提供的新方法,用来实现面向对象编程的方式
	class Person{
    	static info = {name:'zs',age:12}
	}
	console.log(Person.info);
  1. 两套包来安装babel相关的loader功能:(两套包都要装!!)
  • npm i babel-core babel-loader babel-plugin-transform-runtime -D
  • npm i babel-preset-env babel-preset-stage-0 -D
  1. 打开webpack.config.js,在module节点下的rules数组中,添加一个新的匹配规则:
{test:/\.js$/,use:'babel-loader',exclude:/node_modules/}

注意:在配置babel的规则时,必须把node_modules目录通过exclude排除掉,原因有两个:
1.如果不排除node_modules,则babel会把node_modules中所有的第三方js文件都打包编译,这样会非常消耗CPU,同时,打包速度慢
2.哪怕,最终babel把所有node_modules中的js转换完毕了,项目也无法正常运行

  1. 在项目的根目录中,新建一个.babelrc的babel配置文件,这个配置文件是JSON 格式,所以,在写.babelrc配置的时候,必须符合JSON语法规范:不能写注释,字符串必须用双引号
	{
		"presets":["env","stage-0"],
		"plugins":["transform-runtime"]
	}

此时报错:提示需要安装babel-loader@7
npm install @babel/core @babel/preset-env -D
若任然报错,查看错误提示:

  • Couldn’t find preset “env” relative to directory
    解决:npm install babel-preset-env --save-dev
  • Couldn’t find preset “stage-0” relative to directory
    解决:npm i -D babel-preset-stage-0

之后在重新运行即可,结果如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值