Javascript 捆绑多个文件,只加载一个请求的文件
我是bundle的新手,我有一个包含大量脚本文件的项目。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,并且面临大量内容的问题,这意味着我想设置包含大约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);