Javascript 多束Browserify的效率
我是一个新的浏览者,我正试图找出如何使它在客户端需要下载多少方面更有效 我有一个web应用程序,它使用许多不同的第三方库和自定义代码。对于Browserify,人们建议的一般方法似乎是将所有内容打包成一个大的Javascript 多束Browserify的效率,javascript,browserify,dynamic-script-loading,Javascript,Browserify,Dynamic Script Loading,我是一个新的浏览者,我正试图找出如何使它在客户端需要下载多少方面更有效 我有一个web应用程序,它使用许多不同的第三方库和自定义代码。对于Browserify,人们建议的一般方法似乎是将所有内容打包成一个大的bundle.js。对我来说,这似乎效率极低,原因如下: 例如,假设您的bundle.js包含lib1、lib2、lib3、customLib 如果您的web应用程序的一部分只需要lib1,客户端仍然需要下载一个巨大的bundle.js,并且最终没有使用其中的75%。下载了浪费的字节。不必要
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,你就越能摆脱bundle.js
Browserify似乎受到高度重视,所以我希望我只是错过了一些东西。将许多库和自定义脚本捆绑在一起的正确方法是什么?人们称Browserify为“脚本加载器”,但我过去见过的每个脚本加载器(如
yepnope
等)都使用逻辑来确定要下载哪些脚本,这似乎是一个更有效的解决方案,而Browserify似乎希望客户机下载所有内容…不确定答案是否适合这种格式。但无论如何
该手册介绍了以下两种技术
loadjs
函数进行运行时加载<script src="/bundle/common.js"></script>
<script src="/bundle/x.js"></script>
Substack只是解释如何拆分捆绑包。他建议这样使用:
browserify x.js y.js -p [ factor-bundle -o bundle/x.js -o y.js ] \
-o bundle/common.js
嗯,我想这就是我要找的。这是否允许您将所有库保存在单个(或可选地组合某些库)文件中,并仍然动态加载它们?我认为是这样。检查一下这个模块,我还没有用过它(但我也在计划)。是的,实际上看起来真的很不错。请随意将您的答案作为实际答案提交,我会接受。您是否必须使用闭包来加载模块?你能不能在闭馆外用?我怀疑。您必须以某种方式确保模块已加载
loadjs
在第一次调用时发出请求并缓存结果。因此,后续调用没有开销。有点像安第斯人做事的方式。@YuryTarabanko。我正在尝试用分区包加载文件。我的情况是这样的:模块“a”位于/js/bundle-user.js中,这个js文件位于公共文件夹中,可在/js/访问该页面。我尝试在这个文件中加载js('./a'),但它尝试从任何解决方法加载bundle-user.js。?
browserify x.js y.js -p [ factor-bundle -o bundle/x.js -o y.js ] \
-o bundle/common.js