- 如果 RequireJS 将多个 js 文件合并到一个 main.js 文件中,它本质上是否与 ASP.NET 的脚本捆绑功能相同?
- 除了捆绑之外,使用 RequireJS 的唯一好处是能够根据 RequireJS 配置加载某些脚本吗?
我对捆绑和 RequireJS 都很陌生,但是在阅读了一些内容之后,似乎捆绑处理了加载多个 js 文件的多个请求。关于将 RequireJS 与捆绑一起使用,我可能会遗漏任何其他事情吗?
我对捆绑和 RequireJS 都很陌生,但是在阅读了一些内容之后,似乎捆绑处理了加载多个 js 文件的多个请求。关于将 RequireJS 与捆绑一起使用,我可能会遗漏任何其他事情吗?
如果你打算使用 MVC 4,我建议你使用 Bundles。
使用捆绑包,您可以定义将在浏览器上呈现的脚本集,具体取决于您是在调试还是在生产环境中。
为了检测您是否处于调试状态,您必须更改 web.config 文件中的以下设置
<compilation debug="true">
如果您正在调试,Bundle 引擎会将所有脚本呈现为单独的标签。
如果你不调试,Bundle 引擎将只渲染一个标签,并且当前 bundle 引用的所有脚本都将合并到一个单独的 JS 文件中
捆绑包也使用约定来检测应该呈现的脚本文件
例如,在 JQuery 的情况下
JQuery 脚本文件如下所示:
jquery-1.8.2.js
jquery-1.8.2.min.js
当你声明你的包时,你这样做:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
请注意,您没有指定版本或文件名的.min部分,这是因为这些是捆绑引擎在选择正确文件时会考虑的特殊标记
每当您使用指定的路径引用您的包时,包引擎将处理它们,并选择正确的脚本文件,例如:
如果调试,会渲染jquery-1.8.2.js文件
如果不调试,jquery-1.8.2.min.js将被渲染
在此示例中,捆绑包名为:~/bundles/jquery
,您将在页面上引用如下:
@Scripts.Render("~/bundles/jquery")
如果捆绑包有更多脚本,则相同的规则适用于所有脚本。
考虑这个捆绑注册
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
如果调试,这将是呈现的 HTML
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
如果不调试,这将呈现:
<script src="/bundles/jqueryval?v=6Fqs6ZHMM_nFyDgv5mxz89PzsVLAnRNKOhqrK-mI5yU1"></script>
该链接将包含所有合并的脚本文件,从而使页面加载速度更快,因为浏览器只需单击一下即可下载所有脚本
有关详细信息,请参阅 ASP.NET 4.5 新功能
RequireJS 是合适的,有些人可能会说对于实现 JavaScript 繁重 UI 的项目是必要的。
多个请求并不总是一件坏事。最重要的是,您选择的解决方案会随着项目的增长而扩展。