我遇到了一个 ReactJS Boilerplate,它有很好的代表并且是社区驱动的。样式部分更多地强调样式化组件 CSS,但从未停止切换到传统的 CSS 样式方法。尽管这引起了我的兴趣,是什么让 Styled-Component CSS 脱颖而出以及为什么需要采用它。
我对样式化组件 CSS 的理解:
- 组件驱动的理念。您的 CSS 现在也是一个组件。-这很酷!
- 加载你需要的东西,当你需要的时候,有点懒惰的 CSS
- 主题提供者、皮肤、module化和动态 - 这也可以通过其他库来实现
- 组件 DOM 及其样式的服务器端构建。
我的问题是:
浏览器进化为将 CSS 与 Javascript 解析分开来解析,为什么我们试图偏离这一点而将所有内容都放在 Javascript 中?
Styled-component CSS 将其 javascript 库发送到客户端,它实际上在运行时解析样式,并
<style />
在每个组件按需加载时放入标签。这意味着额外的负载和逻辑最终会影响浏览器的执行周期。为什么需要这个?(上面的问题我的意思是对于每个加载的组件,通过
style
标签/多个样式标签 - 重新发明 CSS 解释器计算、创建和插入相应的 CSS )<style />
在 head 标签中连续计算的样式文本是否会导致浏览器回流/重绘?我从中获得了哪些性能优势?
使用附加库/选项,例如用于动态类名的Post-CSS和SCSS 类名散列,这几乎解决了每个人所说的问题。为什么还是SC?
社区,如果我错了,请为我清除空气或纠正我。
一些关于重绘或 DOM 重排的好文章,当 CSS 样式被修改时,浏览器的性能开销如何。
- https://developers.google.com/speed/articles/reflow
- http://www.stubbornella.org/content/2009/03/27/reflows-repaints-css-performance-making-your-javascript-slow/
- https://www.sitepoint.com/10-ways-minimize-reflows-improve-performance/
- https://www.phpied.com/rendering-repaint-reflowrelayout-restyle/
- https://developer.mozilla.org/en-US/docs/Web/API/CSS_Object_Model/Using_dynamic_styling_information