首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Gulp与Razor和Layout.cshtml

如何使用Gulp与Razor和Layout.cshtml
EN

Stack Overflow用户
提问于 2015-09-03 04:29:36
回答 2查看 2.2K关注 0票数 1

在MVC模板文件中使用Gulp的最佳方法是什么?问题是,我的layout.cshtml文件包含指向JavaScript文件的链接,gulp需要修改这些文件以指向优化的缩小文件。问题是,我无法理解如何使用gulp修改这些文件以指向优化的文件以进行调试和发布,因为源文件需要是目标文件,而且该机制需要与TFS一起工作。我最好的想法是使用捆绑机制。在投入时间之前,我想看看是否有更简单的选择。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-08 15:23:41

这是我的解决办法,如果有更好的方法,请告诉我。我跑了:

代码语言:javascript
复制
 Install-Package System.Web.Optimization.HashCache

然后,我修改了BundleConfig.cs,使其包括

代码语言:javascript
复制
var myBundle = new ScriptBundle("~/bundle_virtual_path").Include("~/Scripts/CombinedFile.js");
myBundle.Transforms.Add(new HashCacheTransform());
bundles.Add(myBundle);

然后,我修改了_Layout.cshtml,使其包括

代码语言:javascript
复制
 @{    
    if (HttpContext.Current.IsDebuggingEnabled)
    {
        <script src = "~/Scripts/App/File1.js" ></script>
        <script src = "~/Scripts/App/File2.js" ></script>
    }
     else
    {
         @Scripts.Render("~/bundle_virtual_path");
    }
 }

通过这种方式,我使用包对一个gulp脚本的输出执行缓存破坏,该脚本可以附加到任务中的前构建事件。为了完整起见,这里有一个非常简单的函数,它在本示例中生成CombinedFile.js

代码语言:javascript
复制
gulp.task('myTest', function () {
    return gulp.src(['Scripts/App/File1.js', 'Scripts/App/File2.js'])
     .pipe(concat('CombinedFile.js'))
     .pipe(gulp.dest('Scripts'));
});

应将Gulp文件侦听功能附加到Project事件

票数 1
EN

Stack Overflow用户

发布于 2016-08-15 16:58:09

我找到了解决这一问题的方法,而没有将.net捆绑在图片中。

使用gulp插件gulp和名为FileTagger的nuget包

gulp.js

代码语言:javascript
复制
var gulp = require('gulp'),
     rimraf = require("rimraf"),
     concat = require("gulp-concat"),
     cssmin = require("gulp-cssmin"),
     uglify = require("gulp-uglify"),
     filter = require("gulp-filter"),
     rename = require("gulp-rename"),
     rev = require('gulp-rev');

var paths = {};
paths.jsSource = mainBowerFiles();
paths.baseReleaseFolder = "app";
///these names get alter by rev()
paths.baseJSReleaseFile = "site.min.js";

gulp.task("min:js", function () {
var jsFilter = filter('**/*.js', { restore: true });
return gulp
    .src(paths.jsSource)
    .pipe(jsFilter)
    .pipe(uglify())
    .pipe(concat(paths.baseReleaseFolder + "/" + paths.baseJSReleaseFile))
    .pipe(rev())
    .pipe(gulp.dest("."))
    .pipe(jsFilter.restore);
});

_Layout.cshtml

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>App</title>   
@FileTagger.Render.Script("~/app/site-*.min.js")
</head>
    <body>@RenderBody()</body>
</html>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32366976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档