“我们有 90% 未使用的 CSS,因为每个人都害怕触碰旧的东西”

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 200 美元的免费额度!

在 JS Party 播客

[Kend C. Dodds]: […] 询问任何做过常规旧 CSS 的人,他们都会告诉你:“我不知道我是否可以更改它,所以我会复制它。” 现在我们已经有了——在 PayPal(这不是编造的),我在使用的项目中有 90% 的未使用 CSS,因为每个人都害怕触碰旧的东西。 所以我们只是复制了一个新的东西,并用另一个名字命名。 你可能会说我们不擅长 CSS,但也许 CSS 不擅长我们,我不知道…… [笑声]

[Emma Bostain]: 嗯,这就是为什么 styled-components 和 CSS-in-JS 如此关键;它就像“哦,嘿,我们实际上可以将所有这些逻辑封装在它正在触碰的组件内部,并且不必担心代码泄露了。” 删除、添加这些东西都容易多了。

[Kend C. Dodds]: 是的,你说得完全正确。 这就是这些东西被设计用来解决的问题。

音频剪辑

我之前多次听说过这个故事,通常来自大型公司。 许多开发人员,典型的开发人员流动…… 没有人知道哪些 CSS 实际上被使用,哪些没有被使用,因为 这是一个非常难的问题

这就是我有时喜欢基于组件的样式解决方案(CSS-in-JS,如果你讨厌它)的原因之一。 不是因为我喜欢复杂的工具。 不是因为我喜欢 JavaScript 语法而不是 CSS。 而是因为样式和组件的共置。 因为没有人再害怕样式了——它们与它们要修饰的东西紧密耦合。 它不是每个项目都需要的,但是如果你正在使用组件构建(一种非常好的构建前端的方式, 不需要 JavaScript),你也可以用这种方式进行样式设置。

出于这个原因,我很高兴“作用域样式”在标准讨论中卷土重来。

我记得一个古老的想法(也许它甚至在浏览器中运行过一会儿?),你只需将一个 <style scoped> 块直接放到 HTML 中,无论父级是什么,样式都会作用于该父级。 真是太酷了,我希望我们能再次拥有它。

但似乎更新的东西(这里有 Miriam 的原始提案)有一些比这个基本概念更聪明的东西——比如能够设置下界而不是上界,从而可以对 DOM 中的 “甜甜圈形状”样式 进行作用域 (Nicole Sullivan 的一个术语)。 无论发生什么,没有 Shadow DOM 的作用域样式,零工具,这都是巨大的。