【问题标题】:Css Loader vs Style Loader Vs Sass-LoaderCss Loader vs Style Loader vs Sass-Loader
【发布时间】:2017-10-10 08:07:30
【问题描述】:

在使用 import 语句时,我对区分 sass-loader 和 css-loader 有点困惑。据我所知,css loader resolve import statment(@import) 和 style-loader 可以在你的页面上动态注入样式。我也在我的应用程序中使用 sass-loader。所以我对 sass-loader 功能感到困惑。它是否还解决了 import 语句以及将 sass 转换为 css 的问题。在这种情况下,如果我在项目中仅使用 sass 文件,则不需要 css-loader,因为该工作将由 sass-loader 完成。我在这里吗?任何人都可以强调这一点。 任何帮助将不胜感激

【问题讨论】:

    标签: webpack sass css-loader sass-loader react-css-modules


    【解决方案1】:

    sass-loader 将解析 @import 语句并将导入的 Sass 包含在生成的 CSS 中,因此生成的 CSS 可能没有任何导入语句。但css-loader 不仅仅处理进口。您提到的三个加载器做的事情非常不同,它们应该一起使用,尽管您可以使用其他加载器,这会产生类似的结果。

    1. sass-loader - 将 Sass 转换为 CSS。 (输入:Sass,输出:CSS)
    2. css-loader - 将 CSS 转换为 JavaScript 模块。 (输入:CSS,输出:JavaScript)
    3. style-loader - 在运行时将 JavaScript 模块导出的 CSS 注入到 <style> 标记中。 (输入:JavaScript,输出:JavaScript)。

    注意:style-loader 的输出仅在您使用 CSS 模块时才相关,CSS 模块传递将类名映射到本地标识符的对象。

    如果没有任何将 CSS 转换为 JavaScript 的加载器,您不能使用 sass-loader,但您可能会使用 raw-loader,它只是将模块的内容作为字符串读取,但是您可能会丢失一些转换css-loader 确实如此(例如 CSS 模块或缩小)。

    【讨论】:

    • 您能详细说明一下样式加载器吗?我注意到 css-loader 将 css 嵌入到 bundle.js 中。如果我将它添加到加载器中,样式加载器究竟会对 bundle.js 做什么?是否仅在输出外部 css 文件时使用?另外,当您说将 CSS 注入样式标签时,输出不会是 HTML 或类似的东西吗?
    • @nev.m css-loader 创建一个带有 CSS 的 JavaScript 字符串,style-loader 创建一个带有 CSS 字符串作为其内容的 <style> 标记(使用 document.createElement)并将其添加到DOM。 style-loader 的输出是纯 JavaScript,它创建 DOM 节点并在执行时插入它(因此 在运行时)。 style-loader 仅在您不将 CSS 提取到单独的 .css 文件中时使用。
    • 谢谢。这是否意味着如果您使用 ONLY 的 css-loader(它使用 CSS 创建一个 JavaScript 字符串)而不使用 style-loader(它将样式标签添加到 DOM)那么我们不会看到css生效了吗?
    • @nev.m 是的,这是正确的,除非您手动获取该 CSS 并以某种方式将其添加到 DOM,否则它不会有任何效果。
    • @MichaelJungo style-loader vs to-string-loader怎么样?
    猜你喜欢
    • 2019-04-22
    • 1970-01-01
    • 2018-08-11
    • 2020-03-13
    • 2017-07-15
    • 2018-06-09
    • 2016-05-20
    • 1970-01-01
    • 2021-05-05
    相关资源
    最近更新 更多