webpack按需加载
某些包比较大,比如echarts
,但是用到的页面实际上并不多,所以不能打包到common里面去,想在跳转到某个页面的时候,按需加载,这个怎么处理。
web pack本身只提供了一个require.ensure
,
require.ensure(['echarts'], function() {
var echarts = require('echarts');
/* ... */
});
但是这个代码有点丑陋,而且,总不能我所有使用到echarts
的页面都去写一遍吧。
请问有其他更优雅的方式吗?
现在工程里面就是js文件根据路由按需加载,然后每个使用echarts的页面都被打包进了一份echart。
但是首页等很多页面又没有使用这个,所以不想打包进common里面去;十几个用到echarts
的页面每个页面包含一份,有重复。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
给你提供一个我目前实现按需加载的思路,使用async;此外可能webpack要2.x以上
点这里
按需引入 ECharts 图表和组件
默认使用 require('echarts') 得到的是已经加载了所有图表和组件的 ECharts 包,因此体积会比较大,如果在项目中对体积要求比较苛刻,也可以只按需引入需要的模块。
例如上面示例代码中只用到了柱状图,提示框和标题组件,因此在引入的时候也只需要引入这些模块,可以有效的将打包后的体积从 400 多 KB 减小到 170 多 KB。
可以按需引入的模块列表见 https://github.com/ecomfe/ech...
对于另一个流行的模块打包工具 browserify 也是同样的用法,这里就不赘述了。