cssinjs 即在运行时将样式生成,支持 TreeShaking 将没有使用的样式排除掉
jss 到 styled-component 再到如今的 emotion
stylis 库将样式进行预处理
使用 stylis 加 Design Token 级别的 hash 来进行加速
http://www.ofcourse.io

extract-css-webpack-plugin 提取成单独的 css 后秒解
组件库场景下,用v5完全不能开 babel-plugin-import,会导致白屏

cssInJs缺点
css 全部变成了 js,要计算后变成 style 标签,有计算的消耗
js 文件变大了,有额外的解析 js 文件的消耗
css 之前单独成文件,比如用户引入 antd.css,会有更大的缓存命中率

CSSinJS,核心 API 会收敛为 styled 和 css
css样式管理
Less + CSS Modules
BEM
Tailwind CSS
antd-style cssinjs 样式引擎上层封装出一套 api
styled 的写法可以保证每一个样式都能形成标准的 React 组件,且样式与样式之间的组合比较方便。因此,它非常适合制作一个从 0 开始建设的业务风格化组件库

CSSinJS 动态主题定制

token 系统如何使用、less 怎么迁移、应用如何集成 cssinjs
https://emotion.sh/docs/introduction
https://github.com/ant-design/antd-style

CSS Modules、Inline 引入、CSS Extract、以 URL 的方式引入
antd v5 采用了 CssinJS 的方案,所有的动态主题配置也都变成了代码里的运行时配置
主题编辑器,设计系统的创建者可以非常简单地配出来 antd 的整体风格,并进行实时预览
主题算法,基于基础变量和派生规则来生成一组变量