我正在使用asp.net mvc5。我在服务器上制作了各种捆绑软件,如下所示,因为每个页面需要不同的文件集。
bundles.Add(new Bundle("~/scripts/external/4")
.Include(
"~/Static/Scripts/External/jquery-2.1.3.min.js",
"~/Static/Scripts/External/jquery-ui.min.js",
"~/Static/Scripts/External/bootstrap.min.js",
//and 13 more files
));
bundles.Add(new Bundle("~/scripts/admin/external/1")
.Include(
"~/Static/Scripts/External/jquery-2.1.3.min.js",
"~/Static/Scripts/three.min.r76.js",
"~/Static/Scripts/app.min.js",
//and 15 more files
));
如您所见,有些js文件越来越重复(有时4,5个大文件很常见),因为它们无法交叉引用。
我正在客户端使用lab.js加载这些捆绑包。
Requirejs在这里不起作用,因为捆绑包存在问题。在这里建议使用什么方法来捆绑文件并加载它们而不会阻塞?
最佳答案
我认为这很大程度上取决于应用程序的结构。有很多捆的原因是什么?如果您要在未使用的页面上加载脚本,应该没问题。
通常,我会将大多数供应商脚本(例如您的示例中的jQuery)归为一组,因为它们在网站的大多数页面中都是必需的。然后,如果网站的某个部分需要另一组脚本,我会将它们组合在一起。这样,它们将被提取一次,然后进行缓存并从缓存中检索。具有许多不同的捆绑包意味着文件将是唯一的,因此不会被缓存。我认为拥有一些大文件总比拥有许多小文件好。
附带说明一下,我不喜欢ASP.NET的捆绑功能,而是使用诸如gulp或grunt之类的任务运行程序来创建捆绑包,但是相同的设置也可以在ASP MVC中完成。
但是HTTP / 2可能会改变:Why bundle optimizations are no longer a concern in HTTP/2
关于javascript - 寻找一种更好的JavaScript捆绑和加载方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41975287/