2013-08-06 4 views
1

축소 논리에 관한 질문.불변의 속성이 포함 된 자바 스크립트 minification 논리

// Assumptions: 
//com.example.dummy ns is available 
//com.example.dummy.type is defined immutable -> Object.defineProperty 

var test, test1, test2; 
function execute_case(id) { 
    switch(id) { 
    case 0: 
     test = com.example.dummy.type; 
     break; 
    case 1: 
     test1 = com.example.dummy.type; 
     break; 
    case 2: 
     test2 = com.example.dummy.type; 
     break; 
    default: 
     console.log("default"); 
     break; 
    } 
} 

유이 압축기는 최적화로 다음을 수행

var test,test1,test2;function execute_case(a){switch(a){case 0: 
test=com.example.dummy.type;break;case 1:test1=com.example.dummy.type;break; 
case 2:test2=com.example.dummy.type;break;default:console.log("default");break}}; 

는 압축기에 대한 논리적되지 않을까, 그것을 압축?

var test, test1, test2; 
var st = com.example.dummy.type; 
function execute_case(id) { 
    switch(id) { 
    case 0: 
     test = st; 
    case 1: 
     test1 = st; 
     break; 
    case 2: 
     test2 = st; 
     break; 
    default: 
     console.log("default"); 
     break; 
    } 
} 

여기에서 알 수 있듯이 압축은 더 잘 작동합니다.

var test,test1,test2;var st=com.example.dummy.type;function execute_case(a){ 
switch(a){case 0:test=st;case 1:test1=st;break;case 2:test2=st;break; 
default:console.log("default");break}}; 
+1

음, 물론, 이해 것이라고, 나는 생각을 참조하십시오. 어쩌면 일부 minifier는 그렇게합니다 (모두 같지는 않습니다). 여기에 질문이 있습니까? – sgroves

+0

@sgroves 단순 모드에서의 YUI/GCC/JSMin/UglifyJS - 그 중 하나가 아닌 것 같습니다. 고급 모드의 GCC는 코드를 매우 까다롭게 요구하기 때문에 작동시키기 위해서는 매우 큰 과제입니다. 그래서 나는 그것에 대해 아직 확실하지 않습니다. – v2b

+0

이 문제입니까? 내가 뭔가를 축소 한 후에 나는 다시는 그것을 보지 않는다. 누가 신경 쓰는지. 함수 외부의 변수에'com.example.dummy.type'을 대입하고 싶다면, 당신은 그렇게해야합니다 (또는, 금지하고,'with'를 사용할 수 있습니다). 또는 자신의 글을 쓸 미니언을 찾아보십시오. – sgroves

답변

1
최적화 압축 소스 코드에 대한 감각을 만드는

하지만, 파일 (추천되는) gzip 압축으로 전달되지 않은 경우.

문자열 앨리어싱은 압축 된 소스 코드를 더 크게 만듭니다.

이 (가) Closure-compiler FAQ