Javascript 捆绑多个文件,只加载一个请求的文件

Javascript 捆绑多个文件,只加载一个请求的文件,javascript,asp.net,bundle,Javascript,Asp.net,Bundle,我是bundle的新手,我有一个包含大量脚本文件的项目。 我正在使用bundle,并且面临大量内容的问题,这意味着我想设置包含大约20个文件的bundle,然后我只想从该bundle中呈现一个或3个文件,而不是整个bundle内容(还需要使用bundle配置,如缩小等)。 我不想做太多的包袱 添加(新脚本包(~/bundles/file1).include(file1.js)); 添加(新的ScriptBundle(~/bundles/file2).include(file2.js)); 添加(

我是bundle的新手,我有一个包含大量脚本文件的项目。

我正在使用bundle,并且面临大量内容的问题,这意味着我想设置包含大约20个文件的bundle,然后我只想从该bundle中呈现一个或3个文件,而不是整个bundle内容(还需要使用bundle配置,如缩小等)。

我不想做太多的包袱

添加(新脚本包(~/bundles/file1).include(file1.js)); 添加(新的ScriptBundle(~/bundles/file2).include(file2.js)); 添加(新脚本包(~/bundles/file3\u 4)。包括(file3.js) 。包括(file4.js))

或者使用普通方法调用脚本文件


任何想法都将受到高度赞赏。

ASP.Net捆绑包不是动态的。捆绑包是在应用程序启动时计算的,因此您不能进行任何类型的选择性渲染

如果希望某些页面只包含几个脚本,而某些页面包含更多脚本,则需要为每个页面创建一个捆绑包

不要那样做

如果您担心包含不必要的脚本,那么您有两种选择:

1) 将所有脚本包含到单个捆绑包中 只有20个脚本,这不一定是一个糟糕的选择。它允许浏览器在加载第一页时缓存该文件,并且基本上不会再次请求该文件,直到它发生更改。这意味着每隔一页的加载速度将非常快

缺点是,只要一个脚本发生更改,您的整个包就会失效,需要重新下载。同样,这是一次性成本

2) 捆绑您的常用脚本,然后在每页的基础上包含单个脚本 这允许优化更改频率较低的脚本(jQuery、下划线、angular等)。同时,您可以最大限度地减少脚本的影响,这些脚本可能会在各个页面的不同版本之间更改

这意味着每页有更多的请求,但这些脚本应该更小,并且也会像其他所有脚本一样被缓存


您甚至可以为每页创建单独的捆绑包,这应该更易于维护,因为它们很可能只包含一个或两个脚本。

您可以在bundleConfig中加载多个javascript文件(.js),方法是在单个include()语句中包含所有.js文件

bundles.add(
            new ScriptBundle(~/bundles/files).include(
            "file1.js",
            "file2.js",
            "file3.js));


谢谢@Josh的回复。根据我的状态,在将包添加到bundle表后,如何在同一页面中呈现包?我已经在从aspx文件渲染它了。使用
Scripts.Render()
方法。它是否也在页面内部工作,或者需要重新加载页面?@Kero-好吧,如果你有母版页,你最好在那里添加你的公共包。通过使用适当的路径多次调用
render(“~/bundles/mybundle”)
,可以呈现所需数量的bundle。除此之外,如果您愿意,您可以只包含单个的
标记。谢谢@josh我想我需要呈现不存在的捆绑包,然后在需要的情况下创建它。。。
ScriptBundle scriptBndl = new ScriptBundle("~/bundles/bootstrap");    

//use Include() method to add all the script files with their paths 
scriptBndl.Include(
                   "~/Scripts/bootstrap.js",
                   "~/Scripts/respond.js"
                  );


//Add the bundle into BundleCollection
bundles.Add(scriptBndl);