webpack教程,webpack如何处理css module模块化?
发布于 作者:苏南大叔 来源:程序如此灵动~

css
模块化,生成的css
代码都是随机的。具体体现在类名和id名上,对应的名字和传统的css
选择器的命名是不一样的。其命名可以带上命名控件及随机数。当然,这个命名空间也实际上是假的,就是会安装特殊的命名规则生成选择器名称而已。

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔高兴写的东西。本文描述如何利用webpack
配置css
模块化。当然,在实际应用中,本文中的这些还是不够的。所以,这里就是个入门阐述概念的目的。测试环境:win10
,node@16.14.2
,webpack@5.73.0
,webpack-cli@4.10.0
,webpack-dev-server@4.9.3
,mini-css-extract-plugin@2.6.1
,css-loader@6.7.1
,html-webpack-plugin@5.5.0
,style-loader@3.3.1
。
css
模块化的概念
其实用文字叙述来描述css
模块化的概念,挺难的。这里写个代码对比:
传统的css
调用代码如下:
新的模块化的代码:
sunan.blog.css
大家可以看出,使用css
模块化的概念后,编写html
和css
就变得很难了。本来很容易理解的代码关系就变得异常复杂起来。当然,这就是现在的发展趋势,没辙,所有的js
和css
和html
都纷纷作妖,继而引出这些问题的解决者:webpack
。

配置webpack
本文就是以展示css
模块化为目标,但是牵扯了一堆杂事。
大家如果想要搞清这些webpack
插件都是干啥的,请参考如下文章:
- https://newsn.net/say/webpack.html
- https://newsn.net/say/webpack-plugin-html.html
- https://newsn.net/say/webpack-plugin-html-code.html
- https://newsn.net/say/webpack-dev-server-2.html
- https://newsn.net/say/webpack-css.html
这里先贴一下webpack.config.js
:
package.json
:
其余文件代码
html/index.html
:

src/aaa.bbb.css
:
src/index.js
:
代码解说
代码解说起来还是挺麻烦的,所以就捡着重点说吧。要是谁不明白,请查看苏南大叔以前的webpack
文章:

css
模块化后,所有的css
条目名字都会被修改。
- 其中的名字的规则来自
localIdentName
。如果不设置的话,就会显示为随机数。 - 开启模块化,来自于:
css-loader
里面的options.module
。 css
的条目,如果不想被修改名字的话。需要使用:global()
来修饰一下。- 在
.js
中被import
引入后,需要和对应的模版的html
相结合。本文中的方式是比较弱智的,正常来说,需要使用各种模版引擎来处理。 - 对于
.btn
和#btn
来说,虽然同名,在import
里面是一个变量。但是,对于css
文件来说,还是两个不同的条目。 - 对于名字有中划线的命名,需要使用
[]
来引用,否则会报错。 composes
这个语法,可以处理两个class
的情况。

css
被处理后的表现形式:
- 处于
js
代码中的话,就是style-loader
和css-loader
的组合。 - 处于单独的
css
文件中的话,就是MiniCssExtractPlugin.loader
和css-loader
的组合。
相关文章
- https://newsn.net/say/webpack.html
- https://newsn.net/say/webpack-plugin-html.html
- https://newsn.net/say/webpack-plugin-html-code.html
- https://newsn.net/say/webpack-dev-server-2.html
- https://newsn.net/say/webpack-css.html
综述
这里的css
模块化,算是比较高级的内容了。它的存在对于反爬虫技术来说,是个好消息。对于喜欢采集别人文章的人来说,这些随时变化的css
就是个巨大的炸弹。更多webpack
的文章,请点击:


