html_webpack_plugin_alter_asset_mount-stzhang
避免将单页应用程序SPA
中所有脚本的<script>
标签都一股脑地都放在<body>
底部或<head>
标签内。
- 所有
<script>
标签都放在<head>
标签里会延长首页白屏时间。 - 所有
<script>
标签都放在<body>
底部也会延后一部分视觉敏感程序的初始化时间点。举例来讲,在px2rem
尺寸计算方案中,
- 我们就期望:把计算与设置
<html>
标签font-size
样式属性值的时间点放在开始渲染<body>
标签内容之前,以避免内容大小的缩放闪烁。 - 甚至,若能做到“把程序代码至少分成两部分,一部分在
<body>
渲染前执行以为px2rem
做环境准备,另一部分在<body>
后执行以缩短首页白屏时间”就更完美了。
此webpack
插件就是为了这个目标而生。
工作原理
- 必须与html-webpack-plugin插件配套使用。
- 读取html-webpack-plugin插件的配置项。
html_webpack_plugin_alter_asset_mount-stzhang
给html-webpack-plugin插件添加了一个新配置项mount
(这是一个选项对象)。html_webpack_plugin_alter_asset_mount-stzhang
自身的构造函数也接受包含了mount
配置项的配置对象。但是,它的优先级更低会被html-webpack-plugin
插件配置项对象内的mount
复写(不是合并)。
- 监听html-webpack-plugin插件的
html-webpack-plugin-alter-asset-tags
插件事件。正是在这个事件的处理函数里:
- 使用给html-webpack-plugin插件新增的配置项
mount
。 - 修改
chunk
脚本文件在html
页中的注入位置。
用法
此插件在webpack.plugins
插件数组内出现的位置不影响功能的正常运行
html_webpack_plugin_alter_asset_mount-stzhang
插件被罗列在html-webpack-plugin
插件前/后都能正常地工作。
配置项mount
在html-webpack-plugin
插件的构造函数参数里
mount
配置项会由html_webpack_plugin_alter_asset_mount-stzhang
插件解析与使用。它的格式:
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'tmpl/index.html',
inject: true,
chunks: ['chunkId1', 'chunkId2'],
mount: {
chunkId1: {
js: 'body' | 'head',
css: 'body' | 'head'
}
}
})
chunkId
的数据格式
**在HtmlWebpackPlugin v3+
中,**其的格式是{Chunk Id hint}~{Entry Point 1}~{Entry Point 2}~...
安装
npm i -D html_webpack_plugin_alter_asset_mount-stzhang
const AlertAssetMount = require('html_webpack_plugin_alter_asset_mount-stzhang');
module.exports = {
plugins: [
new AlertAssetMount()
]
};