面试官:聊一聊css-loader吧

前言

如果面试官这么问你,是想了解些什么?如果是你来回答,你会从哪些方面开始聊呢?首先这是一个很细节的问题对吧,你如果想要有的聊是不是得了解webpack,然后了解loader与plugin的区别,是不是还需要知道它是干什么的?以及如果我想用它还可能会用到其他的依赖吗?css的工程化是不是也得了解?

掌握一个东西的过程我喜欢的是先宏观,再微观,再到宏观。什么意思的呢?就是说某个技术大的流程是什么样的,然后掌握应用中解决什么问题需用到细节的点,最后你还可以从这些点再延伸回来,最后还可以和别人讲明白。我觉得这才是一个coder应该做的事。

css工程化

先写一段css:

问题来了,我想在我的webpack工程里引入这个样式文件,webpack能不能打包?看过我前几期文章的同学现在肯定可以异口同声的答出:不可以!你已经进步了你知道吗?

既然webpack处理不了css文件,那是不是要借助我们的扩展了,所以引出了css-loader(它干的活就是把css转换成字符串给webpack处理)

入口文件把刚写的热乎的样式文件引入:

配置一下css-loader(因为我一会儿还要在样式文件里加入背景图片,之前用到的处理图片的loader就先放在下面)

打包去浏览器控制台瞅一眼:

nice,小小的成功了一下,但是:

我页面引用了我写的样式为啥不生效?不生效就对了,哪来的样式?自然而然就引出了style-loader(它干的活就是把样式给你加载到你html的head里): 按照loader的执行顺序从右往左的顺序配置一下我们新加的依赖哈:

重新打包走起,看看页面:

你又成功啦,样式文件里我再加个背景图瞧瞧:

不出意外的话就要出意外了,为啥背景图片404了?

经过搜索,是因为css-loader和file-loader的模块化方式冲突导致的,改下配置:

重新打包,成功:

尾声

虽然我分享的这些点,可能在你的实际工作中需要自己来修改或者引入的机会并不多,但是我觉得你有必要了解清楚,需要在你的大脑里有一个清晰地方案,你要知道的你的项目是怎么跑起来的,而不是说因为我记住了要这样写就可以运行了而草草结尾。

相关推荐
小白探索世界欧耶!~6 分钟前
Vue2项目引入sortablejs实现表格行拖曳排序
前端·javascript·vue.js·经验分享·elementui·html·echarts
GISer_Jing2 小时前
前端营销(AIGC II)
前端·react.js·aigc
NEXT062 小时前
深度解析 JWT:从 RFC 原理到 NestJS 实战与架构权衡
前端·typescript·nestjs
程序员林北北3 小时前
【前端进阶之旅】节流与防抖:前端性能优化的“安全带”与“稳定器”
前端·javascript·vue.js·react.js·typescript
寻星探路4 小时前
【前端基础】HTML + CSS + JavaScript 快速入门(三):JS 与 jQuery 实战
java·前端·javascript·css·c++·ai·html
未来之窗软件服务5 小时前
未来之窗昭和仙君(六十九)前端收银台行为异常检测—东方仙盟练气
前端·仙盟创梦ide·东方仙盟·昭和仙君
大叔编程奋斗记5 小时前
两个日期间的相隔年月计算
前端·salesforce
2501_901147835 小时前
有序数组单一元素查找:从通用解法到算法极致优化——兼谈高性能计算基础思路
算法·面试·职场和发展
上海合宙LuatOS6 小时前
LuatOS核心库API——【io】 io操作(扩展)
java·服务器·前端·网络·单片机·嵌入式硬件·物联网
ShineWinsu6 小时前
对于C++:模版进阶的解析
开发语言·c++·面试·笔试·求职·进阶·模版