回答:
CSSローダーは、CSSファイルを取り、とCSSを返すimports
とurl(...)
WebPACKの者を経由して解決しrequire
た機能:
var css = require("css!./file.css"); // => returns css code from file.css, resolves imports and url(...)
返されたCSS では実際には何もしません。
スタイルローダーはCSSを受け取り、実際にそれをページに挿入して、スタイルがページでアクティブになるようにします。
これらは異なる操作を実行しますが、Unixパイプのように、それらをチェーン化すると便利な場合があります。たとえば、Less CSSプリプロセッサを使用している場合は、
require("style!css!less!./file.less")
に
file.less
少ないローダーと平野CSSへimports
およびを解決するurl(...)
<style>
タグを挿入してCSSをDOMに追加します」(これはgithub.com/webpack/style-loaderの公式ドキュメントからコピーされます)
imports
、私はあなたがを参照してくださいと仮定し@import
ディレクティブ。デフォルトでは、このディレクティブはインポートされたCSSルールをインポーターにマージせず、別のGET
リクエストを作成します。それcss-loader
はマージされた出力を返すと言っていますか?
css-loader
cssファイルを文字列として読み込みます。あなたはそれを置き換えることができraw-loader
、多くの状況で同じ効果を得ることができます。ファイルの内容を読み取るだけで、他のローダーとチェーンしない限り、基本的には役に立ちません。
style-loader
それらのスタイルを受け取り、それらのスタイルを含む<style>
ページの<head>
要素にタグを作成します。
bundle.js
使用後にJavaScriptを見るとstyle-loader
、生成されたコードに次のようなコメントが表示されます。
//スタイルローダー:タグを追加することにより、CSSをDOMに追加します
例えば、
<html>
<head>
<!-- this tag was created by style-loader -->
<style type="text/css">
body {
background: yellow;
}
</style>
</head>
<body>
<script type="text/javascript" src="bundle.js" charset="utf-8"></script>
</body>
</html>
その例は、このチュートリアルからのものです。style-loader
行を変更してパイプラインからを削除した場合
require("!style-loader!css-loader!./style.css");
に
require("css-loader!./style.css");
が<style>
消えることがわかります。
css-loader
ではなくてraw-loader
?
2番目の質問「上記のReadme.mdファイルで言及されている.useable.lessおよび.useable.cssとは何ですか?」に答えるために、デフォルトではrequire'd
、スタイルがの場合、スタイルローダーモジュールは自動的に<script>
タグをDOMに挿入します。そのタグは、ブラウザウィンドウが閉じられるか再ロードされるまでDOMに残ります。スタイルローダーモジュールは、いわゆる「参照カウントAPI」も提供します。これにより、開発者はスタイルを追加し、後で不要になったときにスタイルを削除できます。APIは次のように機能します。
const style = require('style/loader!css!./style.css')
// The "reference counter" for this style starts at 0
// The style has not yet been injected into the DOM
style.use() // increments counter to 1, injects a <style> tag
style.use() // increments counter to 2
style.unuse() // decrements counter to 1
style.unuse() // decrements counter to 0, removes the <style> tag
慣例により、このAPIを使用してロードされたスタイルシートには、上記の単なる「.css」ではなく、「。usable.css」の拡張子が付いています。
Webpackのドキュメントでは、style-loaderとcss-loaderを組み合わせることが推奨されています。