【发布时间】:2014-06-19 09:50:45
【问题描述】:
有人知道在使用 ASP.NET 和 angularjs 时对 .html、.js、.cc 等静态内容进行版本控制的最佳方法吗?
到目前为止,我发现的唯一一件事就是在自定义 httpmodule 中操作 Etag。
有什么想法吗?
【问题讨论】:
-
你的构建过程是什么?你在使用 Grunt、Gulp 还是类似的东西?
有人知道在使用 ASP.NET 和 angularjs 时对 .html、.js、.cc 等静态内容进行版本控制的最佳方法吗?
到目前为止,我发现的唯一一件事就是在自定义 httpmodule 中操作 Etag。
有什么想法吗?
【问题讨论】:
看看 ASP.Net 中的捆绑和缩小
http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification
这将为您的 .jS 和 .CSS 资产添加版本控制。这是一个很好的起点,可以使用插件或自定义配置/代码进行扩展以满足您的需求。
有些插件支持 TypeScript、CoffeeScript、Less 和 Sass。
这样做的另一个好处是,除了对您的资产进行版本控制外,这会将它们捆绑在一起以减少请求 - 并缩小它们以减小大小。
【讨论】:
您可以使用 Grunt 来构建您的 js、css 等。您需要做的资产版本控制就是使用 grunt-filerev 和 grunt-usemin 插件。 第一个将版本文件系统中的文件,第二个将整个 html 和 css 中的所有静态引用更新到版本化文件。
我在 web.api / angularjs 项目中使用了以下简单的方法:
filerev: {
options: {
encoding: 'utf8',
algorithm: 'md5',
length: 8
},
all: {
src: [
'<%= project.dist %>/scripts/spa.min.js',
'<%= project.dist %>/images/**/*.{jpg,jpeg,gif,png,svg,ico}',
'<%= project.dist %>/styles/spa.min.css'
]
},
},
usemin: {
html: 'index.html',
css: 'Content/**/*.css'
},
注意:以上内容进行了修订。如果您需要添加版本号,可以查看grunt-version(我正在使用带有版本和时间戳的生成文件顶部的横幅进行修订)
【讨论】: