如何将Bundle Config添加到Startup.cs以获取在Razor Views中使用的资源?

时间:2017-03-25 15:53:59

标签: asp.net-core asp.net-core-mvc

问题。如何添加到Startup.cs(ASP.NET Core项目)与App_Start>相同的配置? BundleConfig.cs

拥有:

public class BundleConfig
{
    // For more information on bundling, visit http://go.microsoft.com
/fwlink/?LinkId=301862
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));

        bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.validate*"));


        bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                    "~/Scripts/modernizr-*"));

        bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                  "~/Scripts/bootstrap.js",
                  "~/Scripts/respond.js"));

        bundles.Add(new StyleBundle("~/Content/css").Include(
                  "~/Content/bootstrap.css",
                  "~/Content/site.css"));
    }

然后:

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")

例如......

2 个答案:

答案 0 :(得分:7)

MVC5中存在的捆绑和缩小不再存在于MVC Core中。

您的选择是(没有深入研究Node生态系统 - 这同样有效,但会引入更多概念):

这两种工具都在相同的基础设施上运行。他们使用bundleConfig.json文件来描述捆绑包的结构(进入的文件,出现的文件,包括源图等等)。

这两个概念的解释也可以通过documentation获得。

根据您的构建环境,您可以使用@Scripts.Render()来交换缩小和未缩减资源的链接,而不是调用taghelpers来生成与缩小或未缩减资源的链接。例如:

<environment names="Development">
    <script src="~/unminified.js"></script>
</environment>
<environment names="Staging,Production">
    <script src="~/bundledandminified.min.js"></script>
</environment>

答案 1 :(得分:3)

我需要System.Web.Optimization的运行时捆绑功能(能够进行动态较少的编译)所以我为此实现了一个.NET Core替换,现在我决定在MIT下publish it许可证。

如果要使用它,首先需要安装实现NuGet包:

Install-Package Karambolo.AspNetCore.Bundling.NUglify -IncludePrerelease

Install-Package Karambolo.AspNetCore.Bundling.WebMarkupMin -IncludePrerelease

您喜欢哪种缩放器库。

然后你需要在Startup.ConfigureServices()中的DI容器中注册它:

services.AddBundling()
    .UseDefaults(_env)
    .UseNUglify(); // or .WebMarkupMin(), respectively

字段_env是对IHostingEnvironment的引用,您可以在构造函数中注入它。

现在,您可以在Configure()方法中配置捆绑包,如下所示:

app.UseBundling(bundles =>
{
    bundles.AddJs("/jquery.js")
        .Include("/Scripts/jquery-*.js");

    bundles.AddJs("/jqueryval.js")
        .Include("/Scripts/jquery.validate*");

    // and so on...
});

请注意,tildes和“/ bundles”前缀已删除(因为它已自动添加),并且扩展名已添加到捆绑路径中。需要使用与捆绑输出相对应的正确扩展名。

将以下内容添加到_ViewImports.cshtml:

@using Karambolo.AspNetCore.Bundling.ViewHelpers
@addTagHelper *, Karambolo.AspNetCore.Bundling

在Razor视图中,您可以使用熟悉的语法:

@await Scripts.RenderAsync("~/bundles/jquery.js")
@await Scripts.RenderAsync("~/bundles/jqueryval.js")

或新标记助手语法:

<script src="~/bundles/jquery.js"></script>
<script src="~/bundles/jqueryval.js"></script>

请注意,在视图中,您必须添加波形符和前缀。有关此细节和其他详细信息,请参阅project page