问题描述
看了下css modules,还是很多地方不懂,望大家指教
原理
css-module通过将class转义为hash形式的唯一类名,实现局部作用域。
我的问题
问题一
每次构建时,已经生成的hash形式类名会变化吗?
比如:
<div className="{style.block}"></div>
<p>hello boys</p>
被编译成:
<div class="block_xyT5N"><div>
<p>hello boys</p>
我修改了p标签,为它增加样式
<div className="{style.block}"></div>
<p className="{style.parag}">hello boys</p>
请问,原div生成的block_xyT5N类名会在我修改p标签的样式并重新构建后变化吗?为什么?
问题二
hash形式类名难道不会出现哈希碰撞吗?不会出现重名吗?比如当前文件中的class有几百个,而hash生成一般配置:
{
test: /\.css$/,
use: [
{
loader: 'style-loader'
},
{
loader: 'css-loader?modules&localIdentName=[name]-[hash:base64:5]'
}
]
},
配置只取前hash的前五个字符,这能保证不重复吗?这不是最多只有十万-1种组合么?
回答一:
不会变
回答二:
我没见过一个页面会有几百种 class,如果有...呵呵