我正在构建一个多页应用程序,并使用webpack捆绑我的客户端javascript。
我有以下内容:
module.exports = {
entry: {
page1: [
'@babel/polyfill',
'whatwg-fetch',
'./src/scripts/page1.js'
],
page2: [
'@babel/polyfill',
'whatwg-fetch',
'./src/scripts/page2.js'
]
},
output: {
filename: './dist/scripts/[name].js'
},
module: {
rules: [
{
test: /\.js$/,
include: path.join(__dirname, 'src', 'scripts'),
use: {loader: 'babel-loader'}
}
]
}
plugins: [
new webpack.optimize.CommonsChunkPlugin({
filename: 'common'
})
]
}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<!-- some code -->
<script src="/dist/common.js"></script>
<script src="/dist/page1.js"></script>
</body>
</html>
import Typed from 'typed'//<- node_modules import
import myLib from './mylib.js'//<- local lib import
// some code
page2.html 和 page2.js 如此......
这完全正常
我想优化整个加载时间,并选择我的脚本的异步加载策略,同时保持我的公共代码拆分尽可能多浏览器缓存的可能优势..
我希望将CommonsChunkPlugin
配置为能够执行此操作:
<!DOCTYPE html>
<html>
<head>
<!-- old plain synchronous load -->
<script src="/dist/minimalWebpackSorcellery.js"></script>
<!-- async load -->
<script async src="/dist/page1.js"></script>
</head>
<body>
<!-- some code -->
</body>
</html>
...拥有插件执行以下操作:
<script>
)@babel/polyfill
,但require
d模块如typed
来自node_module或./myLib.js
来自本地(我将添加到异步中) <script async>
)webPackJsonp
需要前一个)这可能是一个简单的动作吗?
我是否应该这样做?
我一直在玩async
,children
和其他东西,但是我无法让它工作