gpt4 book ai didi

asp.net - 如何将 gulp 与新的 mvc6 标签助手一起用于不同的环境?

转载 作者:行者123 更新时间:2023-12-03 01:51:48 24 4
gpt4 key购买 nike

我完全迷失了这个概念。我正在努力学习新的 ASP5/MVC6 模式,并希望执行以下操作:

  • 使用<environment>我的 helper _Layout.cshtml仅包含基于环境的完整源代码和精简源代码

  • 使用 Gulp 将源代码注入(inject)到正确的 <environment> 中 helper

  • 当我构建/更改源代码时在本地触发此注入(inject),以及这在生产环境 (Azure) 中如何工作?

  • 是我的wwwroot目录应该是仅可用于浏览器的静态文件? IE:我将来源 site.jssite.css在这里...但是我应该将这些源文件放在其他地方并使用 Gulp 来构建它们,然后将它们放在 wwwroot 中?

我的项目结构如下所示:

/site
/wwwroot
/css
site.css
/js
site.js
/img
logo.png
/lib
/bootstrap
/jquery
/Controllers
/Views
project.json
bower.json

我的_Layout.cshtml有:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>@ViewBag.Title</title>

<environment name="Development">
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="~/css/site.css" />
</environment>
<environment name="Staging,Production">
<!-- How to inject minified version here? -->
</environment>
</head>
<body>
<main>
@RenderBody()
</main>

<environment name="Development">
<script type="text/javascript" src="~/lib/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
<script type="text/javascript" src="~/js/site.js"></script>
</environment>
<environment name="Staging,Production">
<!-- How to inject minified version here? -->
</environment>
</body>
</html>

我找到了this用于设置 ASPNET_ENV,尽管我不确定它是否仍然有效/最新。

我真正的挫败感来自于:

  • 设置 Gulp 来简单地构建我的源 js/css、缩小它并输出它,以便我可以从我的 html 中引用它。

注意:指向第 3 方库很容易,因为我可以将其硬编码在 <environment> 中。 helper 。这只是我自己的消息来源,我不确定最好的做法是什么。

最佳答案

您可以使用 Gulp 来缩小和连接文件,并在 wwwroot 中输出包。

然后在 _layout.cshtml 中,您可以使用 asp-append-version 标记助手将文件的哈希值附加到 URI 中以进行缓存清除。在这里,我将第三方脚本与 site.js 捆绑在一起,但如果您愿意,您可以单独缩小它们;概念是相同的...

<environment names="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
</environment>
<environment names="Staging,Production">
<script src="~/bundles/js/site-bundle.min.js" asp-append-version="true"></script>
</environment>

这是 gulpfile 的摘录,该文件正在进行捆绑和缩小(它是来自 generator-aspnet 的版本的修改版本)...

var paths = {
js: [
webroot + "lib/jquery/dist/jquery.min.js",
webroot + "lib/bootstrap/dist/js/bootstrap.js",
webroot + "js/**/*.js"
],
minJs: webroot + "js/**/*.min.js",
concatJsDest: webroot + "bundles/js/site-bundle.min.js",

// ...

};

gulp.task("min:js", function () {
return gulp.src(paths.js.concat(["!" + paths.minJs]), {
base: "."
})
.pipe(concat(paths.concatJsDest))
.pipe(uglify())
.pipe(gulp.dest("."));
});

我这里有一个完整的工作示例: https://github.com/bigfont/asp-net-core-vnow/tree/master/App06Bundling

关于asp.net - 如何将 gulp 与新的 mvc6 标签助手一起用于不同的环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35582241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com