为什么要提取CSS

11

我正在使用webpack创建单页应用程序。已经多次看到建议从生产构建中提取css,但没有找到原因。

有人能否解释一下为什么它被视为最佳实践,以及它在生产环境中的优势是什么?

这是为了仅在客户端缓存样式和js,还是有其他原因、缺点和优点?

你可以通过以下链接找到这样建议的示例:

https://github.com/webpack-contrib/sass-loader

在生产环境中

通常建议使用ExtractTextPlugin将样式表分离到专用文件中。这样你的样式就不依赖于JavaScript了:


This way your styles are not dependent on JavaScript - N.B.
@N.B. 我看到这些词,但它们并没有描述原因,只有结果。问题是:“为什么建议使用这种方法?这种方法有什么优势?” - Leo
1个回答

17

推荐这样做的原因主要有两点,足以遵循该实践:

1)提取的CSS样式表可以被单独缓存。因此,如果您的应用程序代码发生更改,浏览器只能获取已更改的JS文件。

2)如果不提取CSS,则可能会遭受“未经处理的内容闪烁(FUOC)”的困扰。浏览器必须完全解释JavaScript并将样式应用于页面,这可能会导致FUOC(并且很可能会)。这总是需要一段时间,然后才会应用样式。通过提取CSS,您允许浏览器在解释JS之前单独处理样式,最好是(在js之前加载css)并消除FUOC。

另一方面,在评论中,Oscar建议将CSS与JS组合的优点可能是在开发具有样式的npm包时,使用该库的消费者无需添加对样式表的单独引用。


3
如果您正在开发带有样式的npm包,并且该库的使用者不需要单独引用样式表,那么这将是一个优势。 - Oskar
1
AKA FOBUC(丑陋内容的闪存) - Paul Odeon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接