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

Sam*_*Sam 7 asp.net-core-mvc asp.net-core

这个问题.如何添加到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"));
    }
Run Code Online (Sandbox Code Playgroud)

然后:

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
Run Code Online (Sandbox Code Playgroud)

例如...

Cha*_*adT 9

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

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

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

也可以通过文档获得这两个概念的说明.

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

<environment names="Development">
    <script src="~/unminified.js"></script>
</environment>
<environment names="Staging,Production">
    <script src="~/bundledandminified.min.js"></script>
</environment>
Run Code Online (Sandbox Code Playgroud)


Ada*_*mon 8

我需要 System.Web.Optimization 的运行时捆绑功能(为了能够进行动态的 Less 编译),所以我实现了一个 NET Core 替代品,现在我决定在 MIT 许可下发布它

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

dotnet add package Karambolo.AspNetCore.Bundling.NUglify
Run Code Online (Sandbox Code Playgroud)

或者

dotnet add package Karambolo.AspNetCore.Bundling.WebMarkupMin
Run Code Online (Sandbox Code Playgroud)

无论您喜欢哪种压缩器库。

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

services.AddBundling()
    .UseDefaults(_env)
    .UseNUglify(); // or .WebMarkupMin(), respectively
Run Code Online (Sandbox Code Playgroud)

字段 _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...
});
Run Code Online (Sandbox Code Playgroud)

注意波浪号和“/bundles”前缀被删除(因为它是自动添加的)以及添加到包路径的扩展。需要使用与包的输出相对应的正确扩展名。

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

@using Karambolo.AspNetCore.Bundling.ViewHelpers
@addTagHelper *, Karambolo.AspNetCore.Bundling
Run Code Online (Sandbox Code Playgroud)

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

@await Scripts.RenderAsync("~/bundles/jquery.js")
@await Scripts.RenderAsync("~/bundles/jqueryval.js")
Run Code Online (Sandbox Code Playgroud)

或新的标签助手语法:

<script src="~/bundles/jquery.js"></script>
<script src="~/bundles/jqueryval.js"></script>
Run Code Online (Sandbox Code Playgroud)

请注意,在视图中您必须添加波浪号和前缀。有关此内容和其他详细信息的更多信息,请参阅项目页面