一个非常简短的答案(一般来说还有更多)
- CSS 模板字符串
SC 在运行时使用 CSS 解析模板字符串。Emotion 有一个 babel 插件,可以以一种可以在运行时更快地呈现最终 CSS 的格式准备这些解析的东西。JSS 目前仅支持基本模板字符串,否则使用对象(有计划添加对模板字符串的更好支持)
- 更新样式规则
SC 和 Emotion 在更新动态样式时会生成新的 CSS 规则,JSS 会更新现有规则(注意您可以在开发工具的样式选项卡中看到更新的规则,但在样式标签中看不到):
- 对 React 的依赖
SC 只是反应。Emotion 有一种可以在没有反应的情况下使用的语法(css``)。JSS 有单独的包:jss(核心,无反应)、react-jss(HOC 注入类)、styled-jss(SC 类 API)。
- 插件
目前只有 JSS 支持插件。
静态提取
目前只有 Emotion 支持全静态提取。JSS 也在努力。如果您将样式放入单独的文件(something.styles.js)并使用 webpack 插件提取它们(虽然没有动态值),那么您现在可以使用 JSS 进行静态提取。
表现
http://necolas.github.io/react-native-web/benchmarks/
- 它们都使用样式标签生成实际的 CSS。