2014-10-02 3 views
12

내가 이러한 변수 선언을했다 몇 가지 코드 here 보았다 : 페이지에 코멘트에 따르면이 코드는 축소를 어떻게 최적화합니까?

var equestAnimationFrame = 'equestAnimationFrame', 
    requestAnimationFrame = 'r' + equestAnimationFrame, 

    ancelAnimationFrame = 'ancelAnimationFrame', 
    cancelAnimationFrame = 'c' + ancelAnimationFrame 

을,이 축약을 개선하는 것입니다,하지만 난 방법을 알아낼 수 없었다. 누군가 말해 줄 수 있니? 감사.

+0

내 생각은 그 이후가 [벤더 + 'R'+ equestAnimationFrame]' – matsjoyce

답변

22

적절한 분화를 개선하지 않아도됩니다. 문제의 코드는 requestAnimationFrame polyfill입니다. 즉, 다른 공급 업체 접두사를 시도 할 것입니다. 때로는 코드가 "requestAnimationFrame" (소문자 : r)이고 때로는 msRequestAnimationFrame과 같은 공급 업체 접두어가 사용됩니다.

동적으로 작성되므로 "equestAnimationFrame"이 항상 있지만, 접두사가 "r" 또는 "R" 일 수 있습니다.

은 "축약을 향상"부분 때문에 대신 쓰기입니다 :

var requestAnimationFrame = window.requestAnimationFrame || 
          window.msRequestAnimationFrame || 
          window.mozRequestAnimationFrame || 
          window.webkitRequestAnimationFrame || 
          window.oRequestAnimationFrame || 

그들은 ["ms","moz","o", "webkit"]에 루프를 실행하고 접두사를 시도합니다. 이렇게하면 기껏해야 몇 바이트 만 절약됩니다. 여기

내가 생각 코드가 명확하고 수행 같은 일 :

var base = "equestAnimationFrame" // the base string 
var alternatives = window["r"+base] || // try the basic option first 
['moz', 'ms', 'o', 'webkit'].map(function(x){ 
    return x+"R" + base; // all the options 
}).filter(function(x){ // check if in window 
    return x in window; 
})[0]; 
+10

에서 창'과'ancelAnimationFrame'을 사용하기 때문에 모든 정직, 나는 "unminified"버전이 훨씬 더 읽기 쉽다고 생각합니다. – Ajedi32

+4

@ Ajedi32 전적으로 동의합니다. 게다가 코드가 gzip으로되어 있다고 가정하고 그렇지 않은 경우에도 - 이것이 파일 크기에 중요한 차이를 만들지는 모르겠다. 때로는 명백한 해결책이 더 나은 방법이기도합니다. –

+1

많은 속성을 처리하는 경우이 작업을 수행하면 크기를 절약하여 더할 수 있습니다. – OrangeDog

관련 문제