作者回复: style-loader 插入样式是一个动态的过程,你可以直接查看打包后的 html 源码并不会看到 html 有 style 样式的。 css-loader 的作用是将 css 转换成 commonjs 对象,也就是样式代码会被放到 js 里面去了。style-loader 是代码运行时动态的创建 style 标签,然后将 css style 插入到 style 标签里面去,对应的源码:https://github.com/webpack-contrib/style-loader/blob/master/src/runtime/injectStylesIntoStyleTag.js#L260 CSS 内联的思路是:先将 css 提取打包成一个独立的 css 文件(使用MiniCssExtractPlugin.loader),然后读取提取出的 css 内容注入到页面的 style 里面去。这个过程在构建阶段完成。 CSS 内联的演示已经以文章的形式更新到博客里面(https://github.com/cpselvis/blog/issues/5) CSS 内联的例子(https://github.com/cpselvis/geektime-webpack-course/tree/master/code/chapter03/inline-resource)
作者回复: 这个资源内联还是很常见的,以前端监控脚本为例,如果不内联到html里面去而是以请求的方式价值,那假设这个前端监控的脚本请求加载失败的场景是无法监控的到的。
作者回复: raw-loader 内联进去的样式或者脚本的压缩都是基于 html-webpack-plugin 进行处理的。比如: htmlWebpackPlugins.push(new HtmlWebpackPlugin({ template: path.join(projectRoot, `src/pages/${pageName}/index.html`), filename: `${filename}${pageName}.html`, chunks: [pageName], // assetsPrefix: `${assetsPrefix}/`, inject: inject && isEntryFileExists, minify: minifyHtml ? { html5: true, collapseWhitespace: true, preserveLineBreaks: false, minifyCSS: true, minifyJS: true, removeComments: false } : false })); 这个插件有一个minify参数,用于压缩 html 里面内联的 css/js/html内容
作者回复: 需要使用 raw-loader 的 0.5.1 版本哈,最新的版本的 raw-loader 使用了导出模块的时候使用了 export default 语法, html 里面用的话有问题
作者回复: 嗯嗯感谢,你的支持是我更新高质量视频的动力
作者回复: 不能使用最新的 raw-loader 版本哈,它最新的 3.x 版本导出模块直接使用了 export default 的写法,html 里面的模块这么写的话webpack解析不了,需要是 cjs 的写法才行。
作者回复: 哈哈,感谢夸奖,可以推荐下其他的小伙伴一起学习哈~
作者回复: 嗯嗯,感谢夸奖,努力更新中
作者回复: style-loader 插入样式是一个动态的过程,你可以直接查看打包后的 html 源码并不会看到 html 有 style 样式的。 css-loader 的作用是将 css 转换成 commonjs 对象,也就是样式代码会被放到 js 里面去了。style-loader 是代码运行时动态的创建 style 标签,然后将 css style 插入到 style 标签里面去,对应的源码:https://github.com/webpack-contrib/style-loader/blob/master/src/runtime/injectStylesIntoStyleTag.js#L260
作者回复: CSS 内联的演示已经以文章的形式更新到博客里面(https://github.com/cpselvis/blog/issues/5) CSS 内联的例子(https://github.com/cpselvis/geektime-webpack-course/tree/master/code/chapter03/inline-resource)