作者回复: 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 内联的思路是:先将 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里面去而是以请求的方式价值,那假设这个前端监控的脚本请求加载失败的场景是无法监控的到的。
作者回复: CSS 内联的演示已经以文章的形式更新到博客里面(https://github.com/cpselvis/blog/issues/5)
CSS 内联的例子(https://github.com/cpselvis/geektime-webpack-course/tree/master/code/chapter03/inline-resource)
作者回复: 哈哈,感谢夸奖,可以推荐下其他的小伙伴一起学习哈~
编辑回复: 这个没有反哈
作者回复: css-loader 将css转换成commonjs对象,然后css代码就在js里面了。style-loader的作用是在js执行时,动态的创建style标签,然后将 css-loader 转换的样式插入到这个style标签里去的。
作者回复: CSS 内联的演示已经以文章的形式更新到博客里面(https://github.com/cpselvis/blog/issues/5)
CSS 内联的例子(https://github.com/cpselvis/geektime-webpack-course/tree/master/code/chapter03/inline-resource)
作者回复: 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)
作者回复: 是 html-webpack-plugin 支持的
作者回复: 成功 Get 技能