CSS in JS
解决了
- 全局命名空间,每一条样式都可能被覆盖或重定义(CSS4-scope 属性)
- 难以管理依赖关系
- 难经消除死代码,在实际运行之前,无法确定特定的 CSS 是否起会用到
- 难以共享变量,特别是 CSS 与 JS 之间
- 难以压缩,minify 效果有限
- 非确定性的样式(异步载入 CSS 文件的顺序可能影响最终样式呈现)
- 难以隔离组件(除 shadow-dom 和 scope 属性外)
- 复杂混乱的选择器优先级运算
- 不支持抽象与复用
缺陷
- 绝大部分只适用于 React 生态
- 不能使用 Less/Scss/Stylus 等预处理器
- 不能使用 postcss
- 实现五花八门,没有标准
- 不能解决所有问题,比如 animation、css reset 等等
- 代码混乱,历史的倒车
- 有些实现可能会不尽如人意,如伪类、媒体查询等等
- 难以修改样式
- 组件库样式难以跨项目共用