Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多束Browserify的效率_Javascript_Browserify_Dynamic Script Loading - Fatal编程技术网

Javascript 多束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%。下载了浪费的字节。不必要

我是一个新的浏览者,我正试图找出如何使它在客户端需要下载多少方面更有效

我有一个web应用程序,它使用许多不同的第三方库和自定义代码。对于Browserify,人们建议的一般方法似乎是将所有内容打包成一个大的
bundle.js
。对我来说,这似乎效率极低,原因如下:

例如,假设您的
bundle.js
包含
lib1、lib2、lib3、customLib

  • 如果您的web应用程序的一部分只需要
    lib1
    ,客户端仍然需要下载一个巨大的
    bundle.js
    ,并且最终没有使用其中的75%。下载了浪费的字节。不必要地增加了页面加载时间
  • 如果您的
    customLib
    是一段您经常迭代的代码,那么每次它发生更改时,您的客户端都必须重新下载
    bundle.js
    ,再次下载大量未更改的第三方库
  • web应用程序的其他部分可能会使用
    lib2
    lib3
    ,但客户端可能会也可能永远不会去那里,在那里他肯定会浪费带宽下载整个
    bundle.js

    我看到过将您的捆绑包拆分为多个捆绑包的建议。但目的何在?如果一个页面使用
    lib1
    ,另一个页面使用
    lib1
    lib2
    ,而另一个页面使用
    lib2
    lib3
    ,那么如何将其拆分?你越是把它拆分成多个bundle,你就越能摆脱
    bundle.js


    Browserify似乎受到高度重视,所以我希望我只是错过了一些东西。将许多库和自定义脚本捆绑在一起的正确方法是什么?人们称Browserify为“脚本加载器”,但我过去见过的每个脚本加载器(如
    yepnope
    等)都使用逻辑来确定要下载哪些脚本,这似乎是一个更有效的解决方案,而Browserify似乎希望客户机下载所有内容…

    不确定答案是否适合这种格式。但无论如何

    该手册介绍了以下两种技术

  • 因子2或多个入口点,将公共依赖项放入单个捆绑包中

  • 与factor bundle相同,但使用async
    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