香港六合彩官方网CSS-in-JS的性能成本降低策略

时间:2020-01-25

  评测宏碁暗影骑士3锐龙版怎么样以及13.3英寸Acer Swift 3如何

  在某些上下文中,CSS-in-JS作为一种将组件逻辑链接到其样式的方式变得流行起来。Aggelos Arvanitakis提醒开发人员,在某些情况下,不能再忽视CSS-in-JS的成本,并提供了缓解策略。

  Arvanitakis在一篇文章中指出,尽管CSS-in-JS带来了很多好处,但它在一些应用程序中仍然会造成性能问题。Arvanitakis将重点放在React和两个流行的CSS-in-JS库(style -component和emotion)上,比较了相同代码的两个版本,其中只有一个使用了CSS-in-JS样式。无风格的版本如下:

  样式化的CSS-in-JS实现似乎比未样式化的版本多花50%的时间来呈现。虽然在许多情况下,与CSS-in-JS相关的性能成本很难被察觉,但在其他情况下(例如以大型组件树为特征),它可能变得不可忽视。Arvanitakis假设,某些库的性能损失可能是由于它们如何修改组件树(使用上下文和添加上下文)造成的。读取样式值)和动态应用样式( style 包含动态注入的CSS的标记)。Arvanitakis解释道:

  在我实现一个表之前,一切都很好。我开始注意到渲染速度很慢,特别是当行数超过50的时候。因此,我打开我的devtools来尝试和研究它。(……)所以,总结一下,多个上下文消费者(这意味着需要协调其他元素的反应)和动态样式所固有的内务管理可能会减慢应用程序的速度。

  但是Arvanitakis警告说,性能重构应该只在遇到或度量性能问题之后才进行。JSS CSS-in-JS库的作者Oleg Isonen解释了四种常用CSS-in-JS策略之间的权衡,并链接到比较CSS-in-JS库的性能基准(截至2019年3月)。使用选定的库运行基准测试结果如下:

  CSS-in-JS可能仅限于类似于响应的基于组件的框架。其他流行的框架,如Vue、Svelte或Angular,也使用了其他的托管策略来为开发人员提供类似的好处(比如作用域CSS和树可动摇的CSS)。例如,Angular开发人员可以使用类似html的模板文件、css文件和JavaScript文件来定义他们的组件。然后.js文件会引用另外两个:

  这三个.js、.css和.html文件应该放在同一个目录中。另外,当模板和样式足够短或足够简单时,Angular开发人员可能更喜欢直接在@Component定义中以字符串的形式来协同使用模板和样式。这两种方法在语法上有所不同,但是提供了相同的作用域优势。

  Vue提升单个.vue文件,该文件包含 style 包含CSS样式信息、类似html的模板和处理组件行为的JavaScript方法的标记。类似地,Svelte在. Svelte文件中读取组件定义,该文件也包含相同的文件、样式、模板和逻辑信息。js是React等框架使用的另一种定位方式,这些框架使用JavaScript呈现函数而不是模板。

  正如Elm的创建者Evan Czaplicki在Twitter上所说的,组件就是对象。协同和封装风格和模板属性以及处理组件逻辑的方法似乎响应单一职责原则,正如Robert C. Martin所表达的:

  如果你仔细想想,你会发现这只是定义内聚和耦合的另一种方式。我们想要增加因相同原因而改变的事物之间的凝聚力,我们想要减少因不同原因而改变的事物之间的耦合。www.4635.com长沙it项目管理培训软考考试方法_慧翔香港六合彩官方网

 今晚六合开奖结果| 香港马会彩民村论坛| 现场报码| 香港大赢家心水论坛| 欣欣图库看图印刷| 新天福集团| www.3487777.com| www.234775.com| 六会宝典开奖真播| 香港平特一肖| www.ok438.com| 聚宝盆|