如何以最小的努力在视图页面的脚本块中缩小 JavaScript?
我有一些页面特定的脚本想放在特定的视图页面上。但是 ASP.NET MVC4 捆绑和缩小仅适用于脚本文件,而不适用于视图页面内的脚本代码。
更新
我接受了 Sohnee 的建议,将脚本提取到文件中。但我需要在特定页面上使用它们,所以我最终要做的是:
在布局页面上,我为页面特定的 javascript 块创建了一个可选部分:
@RenderSection("js", required: false)
</body>
然后在视图页面中,假设Index.cshtml
我像这样渲染脚本部分:
@section js{
@Scripts.Render("~/bundles/js/" + Path.GetFileNameWithoutExtension(this.VirtualPath))
}
如您所见,它假定 javascript 文件名 ( index.js
) 与视图页面名称 ( index.cshtml
) 相同。然后在捆绑配置中,我有:
var jsFiles = Directory.GetFiles(HttpContext.Current.Server.MapPath("Scripts/Pages"), "*.js");
foreach (var jsFile in jsFiles)
{
var bundleName = Path.GetFileNameWithoutExtension(jsFile);
bundles.Add(new ScriptBundle("~/bundles/js/" + bundleName).Include(
"~/Scripts/pages/" + Path.GetFileName(jsFile)));
}
然后,如果您在index
页面上,HTML 输出将是:
<script src="/bundles/js/Index?v=ydlmxiUb9gTRm508o0SaIcc8LJwGpVk-V9iUQwxZGCg1"></script>
</body>
如果您在products
页面上,则 HTML 输出将是:
<script src="/bundles/js/Products?v=ydlmxiUb9gTRm508o0SaIcc8LJwGpVk-V9iUQwxZGCg1"></script>
</body>