使用Loader打包静态资源下---补充

本文介绍了如何使用webpack打包CSS样式文件,包括配置importLoaders确保子级样式文件正确处理,实现模块化CSS避免样式冲突,以及利用file-loader打包字体文件。通过实例展示了在index.js中引入scss文件,处理scss内import的样式,以及如何引入和打包第三方字体图标。
摘要由CSDN通过智能技术生成

使用Loader打包—样式文件(下)importLoader

补充一点关于样式打包的内容,打开webpack.config.js这个文件,如果要给css-loader增加配置项,那么这里就不要字符串,而是写一个对象。这个importLoaders是什么东西呢?

在这里插入图片描述
假如我们写了一个scss文件,又在里面引入了一个额外的scss文件。在index.js中我们直接引入了index.scss这个文件
在这里插入图片描述

那么webpack打包的时候对于index.js里面引入的这个文件它会从下往上依次调用loader,但是它打包index.scss这个文件的时候,这里面又通过import额外引入了一个scss,那么这个时候你引入的scss打包的时候就不会走postcss-loader和sass-loader了,而是直接走css-loader了,那么如果我希望在index.scss文件中引入 的avatar.scss文件被打包的时候也走postcss-loader和sass-loader。那这个时候你在css-loader的配置项中importLoaders:2,意思就是你通过import 引入的scss文件在引入之前也要去走两个loader,这种语法就会保证无论你是在js中直接引入scss文件还是在scss文件里面再去引入其它的scss文件,都会依次从下往上执行所有的loader就不会有问题了。

css样式打包模块化

这个模块化和我们之前说的模块化不一样,首先我们删除掉index.scss中avatar.scss的引用,以及avatar.scss这个文件。
我们在src下面创建一个createAvatar.js文件,每次调用都会在页面增加一个图片
在这里插入图片描述
然后我们在index.js中引入这个函数,并调用
在这里插入图片描述
那么,页面上应该会有两张具有相同样式的图片
在这里插入图片描述
那么这里实际上想说的是,你在index.js文件中引入的样式,实际上影响到了另外一个创建图片的样式,这么去引入样式就相当于全局的,那么很多时候会产生问题:改这个文件的样式时候,一不小心,把另一个文件的样式也给改变了,很容易出现样式冲突的问题。这个时候我们就有了一个css module的概念。也就是模块化的css,在某一个模块中有效。那我们应该如何实现呢?

我们在css-loader中的配置项添加 modules:true,开启css的模块化打包
在这里插入图片描述
那我们改变index.js中的引入方式,并通过classList.add()的方式给图片添加样式
在这里插入图片描述
运行打包之后的html,我们看见第一个图片没有样式,而第二个图片是有大小和偏移样式的
在这里插入图片描述
这个时候添加的样式只对第二张图片有效,如果我们想第一张也有同样的效果
只需在createAvatar.js中引入同样的scss文件并添加相同的样式
在这里插入图片描述
再次打包后,我们可以看见,两个图片具有相同的样式
在这里插入图片描述
这中语法带来的好处是,我这个文件的样式和其它文件的样式不会有任何的耦合和冲突,这样的话我们写样式就非常的独立,可以避免很多问题

使用webpack打包字体文件

我们先整理一下文件,删除index.js中的内容
删除bundle下的image文件夹,bundle.js,src下保留以下文件
在这里插入图片描述
我们在index.js中写如下内容
在这里插入图片描述
在这里插入图片描述

我们现在想要实现的是在abc的位置放上第三方的字体,我们使用iconfont的字体图标做演示
在src下面新建font文件夹里面存放解压从iconfont下载部分的文件
在这里插入图片描述
把iconfont.css内容替换到index.scss内容
在这里插入图片描述
修改index.scss中引入文件的目录位置
在这里插入图片描述
在终端执行 npm run bundle 打包,然后你会发现报错,打包scss文件的时候,引入的四种字体文件,webpack并不知道该如何打包,所以我们应该在配置文件中告诉webpack该如何打包
在这里插入图片描述
我们可以借用file-loader来处理这写字体文件,
安装file-loader

cnpm install file-loader -D

在这里插入图片描述

执行 npm run bundle打包命令,运行html文件,浏览器上就会呈现一个字体图标
在这里插入图片描述
这就是如何通过webpack打包引入的第三方字体图标

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值