System.Web.Optimization
v1.3을 사용하고 있는데, MVC 5 웹 응용 프로그램에서 JavaScript 및 CSS 파일을 번들하고 축소하는 표준 구성이라고 생각합니다. 대부분의 경우이 방법이 효과적이지만 축소 과정에서 JavaScript가 손상된 경우를 발견했습니다. 위의 코드가 더 이상 (이 정돈되어 있기 때문에) 아무것도 유용하지 않지만System.Web.Optimization.JsMinify가 잘못된 JavaScript를 생성합니다.
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 = {}));
, 그것은 축소를 문제를 설명하지 않습니다 :
여기에 원래 AngularJS와 입력 검증 지침 무엇의 단순화 된 버전입니다. 축소 된 경우에는 다음과 같이 결과 자바 스크립트는 다음과 같습니다 축소를 루프 변수 i
원래 코드에 사용된다는 사실에도 불구하고, 매개 변수의 이름 link
기능 t
및 i
을 할당 한 방법
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={}))
참고.
말할 필요도없이, 이것은 코드를 분해합니다. 이 경우 루프 변수의 이름을 변경하여 문제를 해결할 수 있지만, 나는 깨닫지 못하고있는 JsMinify
의 축소에 다른 불리한 결과가있을 수 있다고 우려하고 있습니다.
그래서, 내가 3 개 질문이 문제에 관한 한 :
- 가 그렇다면 내가 바로, 이것은 축소를 버그라고 가정하고 있습니까 어딘가 내가 그것을보고해야이 입니까?
- 축소 된 코드에서이 문제점의 다른 인스턴스를 찾는 실용적인 방법이 있습니까?
-
System.Web.Optimization
이 사용하는 JavaScript 미니 화 엔진을 대체 할 수 있습니까? 그렇다면 무엇이 좋은 대체품이 될까요?
미리 감사드립니다. 팀
업데이트 : 몇 가지 추가 조사 후, 나는 실제로 System.Web.Optimization
및 대신 축약을 수행 내가보고하고있는 하나가 될 것으로 보인다 WebGrease
것을 발견했다. 이것은 나의 첫 번째 질문에 답하는 것 같지만, 나는 대체 minifier에 관한 조언을 여전히 고맙게 생각할 것이다.
좋은 의견에 감사드립니다.그것은 10 분의 드롭 인 교체 였고 완벽하게 작동합니다. –