【发布时间】:2015-03-01 07:01:29
【问题描述】:
我是 Browserify 的新手,我正在尝试弄清楚如何使其在客户端需要下载的量方面更高效。
我有一个网络应用程序,它使用许多不同的 3rd 方库和自定义代码。使用 Browserify,人们建议的一般方法似乎是将所有内容打包成一个大的bundle.js。由于以下几个原因,这对我来说似乎非常低效:
例如,假设您的 bundle.js 包含 lib1, lib2, lib3, customLib。
- 如果您的网络应用程序的一部分只需要
lib1,客户端仍然需要下载一个巨大的bundle.js,并且最终不会使用其中的 75%。浪费的字节下载。不必要地增加了页面加载时间。 - 如果您的
customLib是您经常迭代的一段代码,那么每次它发生更改时,您的客户都必须重新下载bundle.js,再次下载大量未更改的第三方库...
您的网络应用程序的其他部分可能使用lib2 和lib3,但客户端可能会或可能不会去那里,他肯定会浪费带宽下载整个bundle.js。
我看到了将捆绑包拆分为多个捆绑包的建议。但是为了什么目的?如果一个页面使用lib1,另一个页面使用lib1和lib2,另一个页面使用lib2和lib3,那么如何拆分呢?您将其拆分为多个捆绑包的次数越多,您不是就失去了bundle.js 的优势吗?
Browserify 似乎受到高度重视,所以我希望我只是在这里遗漏了一些东西。将许多库和自定义脚本捆绑在一起的正确方法是什么?人们称 Browserify 为“脚本加载器”,但我过去见过的每个脚本加载器(如 yepnope 等)都使用逻辑来确定要下载哪些脚本,这似乎是一个更有效的解决方案,而 Browserify 似乎想要客户端下载所有内容...
【问题讨论】:
-
嗯,这就是我想找的东西。这是否允许您将所有库保存在单个(或可选地组合某些)文件中并仍然动态加载它们?
-
我想是的。检查这个模块npmjs.com/package/partition-bundle我还没有使用它(但我也在计划)。
-
是的,看起来确实不错。请随意提交您的答案作为实际答案,我会接受。
标签: javascript browserify dynamic-script-loading