做一个单页面应用,用webpack打包html,css,js生成main.js,会不会超过几千KB,怎么处理这个问题?
可以分类打包成多个文件:
entry: {
app: ['./app/main.js', '.lib/index.js'],
vendors: ['./app/vendor.js']
}
output: {
path: staticPath,
filename: '[name].js'
}
如果文件实在太大,考虑lazy load
会的,最终的文件会很大,拆分出公共库,压缩文件,同时开启服务器gzip
能量守恒,代码也守恒,用webpack打包的大,不用webpack一样大,只要你是一次全加载的。
解决方式只有两个
1, 砍需求,砍功能,砍代码。
2, 各模块异步require,异步加载,这样只访问一个模块时,不用加载其他模块代码。
建议公共模块打包成一个文件,然后每个模块打包各自的业务代码。这样可以连接数和文件体积上取得一个平衡
会越来越大,所以可以配合前端AMD/require一起用,在webpack里忽略到一些公用模块,在浏览器端用require引入项目,这样可以做到不同页面获取不同的模块资源。
还有公用库注意不要打到main.js里,单独拿出来处理,在layout里引入。webpack里可以通过一个CommonsChunkPlugin
来设置一个模块使用多少次,统一打到一个commons.js里。