捆绑许多文件并仅加载请求的文件

问题描述 投票:0回答:2

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

我正在使用捆绑包并面临大量内容的问题意味着我想设置包含大约20个文件的包,然后我只想从这个包中渲染一个文件或3个文件而不是整个包内容(但也包含捆绑包)配置像缩小,...)。

我不想做很多捆绑

bundles.add(new ScriptBundle(~/bundles/file1).include(file1.js)); bundles.add(new ScriptBundle(~/bundles/file2).include(file2.js)); bundles.add(new ScriptBundle(~/bundles/file3_4).include(file3.js) .include(file4.js));

或使用普通方法调用脚本文件<script src='something.js'></script>

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

javascript asp.net bundle
2个回答
1
投票

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

如果您希望某些页面只包含少量脚本,而某些页面包含更多脚本,那么您需要为每个页面创建一个包。

不要那样做!

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

1)将所有脚本包含在一个包中

只有20个脚本,这不一定是一个糟糕的选择。它允许浏览器在首页加载时缓存该文件,并且在更改之前基本上不再请求它。这意味着每个其他页面的加载速度都非常快。

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

2)捆绑您的常用脚本,然后在每页的基础上包含单个脚本

这允许更改频率更低的脚本(jQuery,下划线,角度等)进行优化。同时,您可以最大限度地减少可能在各个页面的发行版之间发生更改的脚本的影响。

这意味着每页有更多请求,但这些脚本应该更小,并且还将像其他所有内容一样进行缓存。

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


0
投票

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

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

要么

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);
© www.soinside.com 2019 - 2024. All rights reserved.