Tim*_*ter 5 asp.net-mvc minify bundling-and-minification webgrease
我System.Web.Optimization在我认为是标准配置的情况下使用 v1.3,以捆绑和缩小 MVC 5 Web 应用程序中的 JavaScript 和 CSS 文件。在大多数情况下,这工作得很好,但我发现了 JavaScript 被缩小过程损坏的情况。
这是最初的 AngularJS 输入验证指令的简化版本:
var myApp;
(function (myApp) {
myApp.module.directive("validator", [
function () {
return {
link: function (scope, element) {
var validators = [
{ signal: "required", message: "Please enter a value", value: null },
{ signal: "email", message: "Please enter a valid email address", value: null }
];
$("input", element).on("blur", function () {
for (var i in validators) {
var validator = validators[i];
if (scope.$parent.form[scope.modelName].$error[validator.signal]) {
element.removeClass("has-success");
scope.errorMessage = myApp.Utility.formatString(validator.message, eval(validator.value));
break;
}
}
});
}
};
}
]);
})(myApp || (myApp = {}));
Run Code Online (Sandbox Code Playgroud)
尽管上面的代码不再做任何有用的事情(因为它已被修剪),但它确实演示了缩小问题。缩小后,生成的 JavaScript 如下所示:
var myApp;
function(n){
n.module.directive("validator",[
function(){
return{
link:function(t,i){
var r=[
{signal:"required",message:"Please enter a value",value:null},
{signal:"email",message:"Please enter a valid email address",value:null}
];
$("input",i).on("blur",function(){
var i,
validator;
for(i in r)
if(validator=r[i],t.$parent.form[t.modelName].$error[validator.signal]){
i.removeClass("has-success");
t.errorMessage=n.Utility.formatString(validator.message,eval(validator.value));
break
}
})
}
}
}
])
})(myApp||(myApp={}))
Run Code Online (Sandbox Code Playgroud)
请注意缩小如何将参数名称分配t给i函数link,尽管i原始代码中使用了循环变量。
不用说,这会破坏代码。在这种情况下,我可以通过重命名循环变量来修复它,但我担心 的缩小可能会产生其他JsMinify我不知道的不利后果。
所以,我有3个问题与这个问题相关:
System.Web.Optimization,如果可以,什么是一个好的替代方案?预先非常感谢您的想法。蒂姆
更新:经过进一步的调查,我发现它实际上是WebGrease代表执行缩小System.Web.Optimization,并且这个问题似乎是我所看到的问题。这似乎回答了我的第一个问题,但我仍然希望得到有关替代缩小器的建议。
过去,我成功地使用了YUI Compressor for .Net,它是 YUI Compressor 从 Java 移植到 .NET 的版本。它的伟大之处在于它基于 Mozilla 的 Rhino JavaScript 解释器,这意味着它实际上可以理解代码,而不仅仅是在其上运行正则表达式。因此,如果您有 JavaScript 语法错误,您的构建将会失败。
| 归档时间: |
|
| 查看次数: |
2937 次 |
| 最近记录: |