Я пытаюсь понять, как style-loader
работает?В исходном коде style-loader
есть фрагмент кода о горячей замене модуля.
var hmr = [
// Hot Module Replacement,
"if(module.hot) {",
// When the styles change, update the <style> tags
" module.hot.accept(" + loaderUtils.stringifyRequest(this, "!!" + request) + ", function() {",
" var newContent = require(" + loaderUtils.stringifyRequest(this, "!!" + request) + ");",
"",
...
]
Мой вопрос касается !!
в коде.в чем смысл?и как webpack
справиться с этим?Я проверил документ webpack
, но не нашел объяснения.
Я отлаживаю код, когда параметр request
равен
"/Users/leon/Documents/localCode/style-loader-test/node_modules/_css-loader@1.0.1@css-loader/index.js!/Users/leon/Documents/localCode/style-loader-test/index.css"
,
loaderUtils.stringifyRequest(this, "!!" + request)
возвращает:
"!!./node_modules/_css-loader@1.0.1@css-loader/index.js!./index.css"
loaderUtils.stringifyRequest используется для чередования абсолютного пути, поэтому результат легко понять.
После этого веб-пакетразбери код дальше.И наконец, следующий код генерируется в выходном коде:
module.hot.accept(/*! !./node_modules/_css-loader@1.0.1@css-loader!./index.css */ "./node_modules/_css-loader@1.0.1@css-loader/index.js!./index.css", function() {
var newContent = __webpack_require__(/*! !./node_modules/_css-loader@1.0.1@css-loader!./index.css */ "./node_modules/_css-loader@1.0.1@css-loader/index.js!./index.css");
...
}
!!
исчез в выходном коде, но я не знаю, что происходит, и каково значение !!
?Кто-нибудь может помочь объяснить?