2010-04-27 5 views
5

Stavo guardando gli script statici di Twitter e ho notato che tutte le variabili e le funzioni in cui è lungo solo 1 carattere, perché e come fanno questo? Ha qualcosa a che fare con le prestazioni? Se è così, perché non danno a tutti gli elementi sul loro sito web questo tipo di nomi brevi, forse 2 caratteri lunghi invece di 1 per evitare qualsiasi collisione.Nomi a 1 lettera per variabili e funzioni in jQuery, JavaScript

Esempio:

(function (A) { 
A.fn.isScreenNameField = function() { 
    return this.each(function() { 
     var M = A(this); 
     var F = A("#signup_username_url"); 
     var E = A("#screen_name_info"); 
     var D = A("#avail_screenname_check_indicator"); 
     var O; 
     var C; 
     var I; 
     var N = M.val(); 
     var G = N; 
     var H = N != ""; 
     var Q = /[a-zA-Z0-9_]/; 

     function K() { 
      if (H) { 
       F.html(M.val()) 
      } 
     } 
     function L() { 
      M.trigger("show-info"); 
      E.hide(); 
      D.show() 
     } 
     function B() { 
      E.show(); 
      D.hide() 
     } 
     function P() { 
      G = O; 
      jQuery.ajax({ 
       type: "GET", 
       url: "https://stackoverflow.com/users/username_available", 
       data: { 
        username: O 
       }, 
       dataType: "json", 
       success: function (R) { 
        if (C) { 
         var S = R.msg; 
         if (R.valid) { 
          M.trigger("is-valid"); 
          F.removeClass("invalid").addClass("valid") 
         } else { 
          M.trigger("is-invalid", R.msg); 
          F.addClass("invalid").removeClass("valid") 
         } 
        } 
       }, 
       beforeSend: null, 
       complete: function() { 
        clearTimeout(twttr.timeouts.availabilityTimeout); 
        B() 
       } 
      }) 
     } 
     function J(R) { 
      O = M.val(); 
      clearTimeout(twttr.timeouts.availabilityTimeout); 
      C = O.match(Q); 
      if (!C) { 
       G = O; 
       B(); 
       return 
      } 
      if (O == G) { 
       return 
      } 
      L(); 
      twttr.timeouts.availabilityTimeout = setTimeout(P, 2000) 
     } 
     M.isSignupFormField({ 
      validateWith: function (R) { 
       if (isBlank(R)) { 
        return _("Please enter a user name") 
       } else { 
        P() 
       } 
      }, 
      allowInput: Q 
     }); 
     M.keyup(function (R) { 
      if (jQuery.inArray(R.keyCode, [16, 17, 18, 20, 27, 33, 34, 35, 37, 38, 39, 40, 144]) == -1) { 
       if (M.val() != "") { 
        H = true 
       } else { 
        M.trigger("show-info") 
       } 
       K(); 
       J() 
      } 
     }); 
     M.bind("value-changed", P); 
     M.bind("custom-validate", P) 
    })P 
} 
}) 

risposta

19

Questo script è stato "minified", una tecnica automatizzata di sostituire le variabili con nomi più brevi, senza cambiare la funzionalità. Vedere JSMin, ad esempio. L'obiettivo è ridurre i tempi di download e la larghezza di banda quando si invia lo script a un client.

+6

Credo che Crockford definisca questa particolare tecnica "offuscamento". JSMin non altera i nomi delle variabili perché Crockford non ama l'offuscamento poiché ritiene che sia troppo probabile che causi errori – Bob

+0

Buon punto. [YUI Compressor] (http://developer.yahoo.com/yui/compressor/) riduce e "offusca" entrambi. – kevingessner

1

Javascript è lato client, quindi è necessario caricare lo script. Meno testo da scaricare significa prestazioni migliori, penserei.

0

Molti progetti javascript eseguono il codice tramite un "minificatore" per rendere il codice più piccolo. Ciò migliora il tempo impiegato dal browser per scaricare la libreria. La maggior parte dei progetti di fornitura anche una versione non minified per gli sviluppatori di leggere:

Esempio qui: http://docs.jquery.com/Downloading_jQuery#Current_Release

0

potrebbero essere molte ragioni per spiegare perché lo fanno, solo per citarne un comune:

diminuire il file di script come molti usano Twitter.

2

Eseguono i loro script tramite qualcosa come http://developer.yahoo.com/yui/compressor/ per ridurne le dimensioni e quindi il tempo necessario per il caricamento.

Tutto ciò per ridurre i tempi di caricamento dei siti Web.
Negli ultimi anni questo argomento è diventato qualcosa di simile a un nuovo campo, soprattutto a causa di cose come i colloqui di Steve Stouders: http://stevesouders.com/

Problemi correlati