常规 html 中的 ASP.NET 包?

标签 asp.net web-optimization

我的 Angular 应用程序由 ASP.NET webapi 提供支持,我在其中提供一个 index.html 并且 Angular 处理那里的所有其他内容。我想使用捆绑,但我不知道该怎么做。我是否必须仅使用 razor(或网络表单)来引用包?或者是否有一个选项可以为捆绑输出提供一个固定名称,我可以在我的 src/hrefs 中引用?

澄清一下,我没有使用 MVC 或 Webforms 来提供 html。你只是被重定向到 index.html ,路由都是客户端的。我的包配置是使用 WebActivator.PostApplicationStartMethod 完成的。

最佳答案

首先,为了只回答问题,您可以在 html 文件中使用普通链接

<script src='bundles/mybundle' type='text/javascript' language='text/javascript'></script>  

=> 这会将您的 javascript 包包含到页面中

这种方法的问题是,如果您修改包中包含的 *.js 文件,则修改在包中是不可见的。 这都是关于“bundle cache busting”的,这是 ASP.NET 的一个很好的特性,但只能从 razor 模板中使用...... 显然,您还可以重新启动池(但这非常缓慢且难以自动化):)

要解决此问题,您可以使用以下内容定义自己的 ASP.NET MVC Controller

using System.Linq;
using System.Web.Mvc;
using System.Web.Optimization;

namespace Controllers
{
    public class DebugBundlesController : Controller
    {
        // GET: debugbundles/mybundle
        public ActionResult Mybundle()
        {
            return InlineBundleJavaScript("~/bundles/mybundle");
        }

        private ActionResult InlineBundleJavaScript(string bundlePath)
        {
            //see https://blog.mariusschulz.com/2015/10/25/inlining-css-and-javascript-bundles-with-asp-net-mvc
            var bundleContext = new BundleContext(HttpContext, BundleTable.Bundles, "~/bundles");
            var bundle = BundleTable.Bundles.Single(b => b.Path == bundlePath);
            var js = bundle.GenerateBundleResponse(bundleContext).Content;
            return JavaScript(js);
        }
    }
}

然后你像这样使用它:

<script src='debugbundles/mybundle' type='text/javascript' language='text/javascript'></script>

=> 现在,每次您进行更改时,都会重新生成 bundle 。

请注意仅在开发期间使用它,因为您几乎消除了 bundle 的所有好处(即特别是客户端和服务器缓存)

关于常规 html 中的 ASP.NET 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22124153/

相关文章:

asp.net - VS 2015 和 msbuild 抑制 typescript 错误

asp.net - 在 ASP.NET 中引用 jquery 的最佳方式是什么?

css - 是否可以使用 1 kb .png 图像作为背景图像(重复)?

c# - 在代码中设置 Far Future Expires header - ASP.NET

javascript - 网页优化

asp.net - 更改 ASP.Net 验证控件以忽略 JavaScript 隐藏字段

html - 减少两个 td 之间的空间

来自远程服务器的 ASP.NET 表单例份验证好吗?

asp.net-mvc-4 - ASP.NET MVC4 如何在一条规则中将 js 和 css 一起创建 bundle ?

asp.net-mvc - 有没有一种方法可以在运行时动态更新asp.net mvc bundle 内容?