关于 webpack dll 的疑惑

前置条件:

首先项目是异步加载(lazyload)的

假如项目总大小为2M,那么 chunks: "initial" 的大小为500K左右;

问题

如果我导出 dll 的包,正常配置的话,引入是在入口处 html 里直接引用的,那它是否能异步加载 ?

如果能, dll 中引入了异步代码 是否会增加初始代码的量?

如果不能异步 那么 dll 的加载的代码量就比较小,
即使将初始代码500K 全部转为 dll ,相对于 2M 的大小,webpack 增加的编译速度也很小;

还有我的部分代码是按需加载的, dll 是否能够起效 ?

总结: 在异步加载的项目中,dll 能够起的作用 ? 他是否能导出引入异步的,按需引入的模块?

阅读 2.5k
2 个回答

我尝试着解释一下:
dll和懒加载好像没什么关系
dll和打包后包的大小好像也没什么关系
dll是干什么的呢?
1、dll是把不经常改变的第三方包(例如vue,vuex,jquery,axios等等)打包在一起,然后只要这里的第三方包版本不更新,以后的webpack打包就直接跳过这些,也就是说
dll可以提高webpack的打包速度
2、第三方包打包在一起了,项目的公共包的体积自然就会减小,当用户首次加载页面是,dll包就会进入用户的缓存中,以后你再更新项目,当dll包不变的时候,用户打开首页加载的共公包就会减小,首页打开会快一点,也就是说
dll可以减少公共包的大小,利用用户的缓存,提高首页加载速度
我对dll的了解就这么多,希望能能对你有所帮助

自问自答下吧
经我的实验 想要 dll 异步加载暂时无法实现 因为没有这个钩子 来决定他的加载
而关于按需加载(loaders里的按需加载),不影响 dll ,dll 仍旧是全部打包;
总结一下, dll 只适用于 development 环境的加快打包速度

若能找到 dll 异步加载的方案,后续再来修改答案

21.3 修改:
之前我假设的是 dll 里有 async 的包, 这样确实会有点问题
但是如果 dll 里都是基础包, 那确实是一个有效方案

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题