2014-10-02 10 views
12

ich einige Codes sah here, die diese Variablendeklarationen hatten:Wie optimiert dieser Code die Minimierung?

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

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

Nach einem Kommentar auf der Seite, das ist Verkleinerungs zu verbessern, aber ich kann nicht herausfinden, wie. Kann mir das jemand sagen? Vielen Dank.

+0

Ich denke, die, weil sie später 'ancelAnimationFrame' verwenden, wie in' Fenster [vendor + 'R' + equestAnimationFrame] ' – matsjoyce

Antwort

22

Es ist nicht zu verbessern Verfälschung richtig - der Code in Frage ist ein requestAnimationFrame Polyfill. Dies bedeutet, dass es verschiedene Hersteller-Präfixe versuchen wird. Manchmal wird der Code "requestAnimationFrame" (Kleinbuchstabe r) und manchmal mit einem Lieferantenpräfix wie msRequestAnimationFrame sein.

Aus diesem Grund ist es dynamisch aufgebaut, ist immer da, aber es könnte ein "r" oder "R" vorangestellt werden.

Die „Verbesserung der Verkleinerungs“ Teil ist, weil statt des Schreibens:

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

Sie ein auf ["ms","moz","o", "webkit"] for-Schleife laufen und die Präfixe versuchen. Dies spart bestenfalls einige Bytes.

Hier ist der Code Ich glaube, klarer ist und tut das Gleiche:

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

In Ehrlich gesagt, ich denke die "unminifizierte" Version ist viel besser lesbar. – Ajedi32

+4

@ Ajedi32 stimme ich voll und ganz zu. Außerdem wird davon ausgegangen, dass der Code gezippt ist und selbst wenn es nicht ist - ich bezweifle, dass dies einen signifikanten Unterschied in der Dateigröße machen würde. Manchmal ist die offensichtliche Lösung die bessere. –

+1

Wenn Sie dies für viele Eigenschaften tun, wird sich die Größeneinsparung addieren und signifikant werden. – OrangeDog