less和sass
相比于css解决了什么问题?
答案:less和sass可以嵌套,可以使用变量;而css不可以
BEM/CSS modules/Atomic CSS/CSS in JS,这些方案应用于工程化中,解决了的问题是:
多人协同/大规模场景下,css 命名冲突
BEM - 通过一些命名规范去避免命名冲突 (block__element–modifier) ,并不常用,缺点如下:
- 不能从根本上解决这个命题
- 命名 长 + 比较难想
所以现在用CSS Modules来解决CSS命名冲突的问题:
import styles from 'xxx.less'
styles.a => hash
以上代码中,其实styles.a的a后面有一长串的hash值,虽然不同文件中可能a相同,但是hash值不同,所以不会命名冲突。
在webpack中配置,如下图所示:
css modules,利用hash值保证不同文件中的css命名不冲突
缺点:用起来繁琐