Alors que je suis sûr que la plupart des javascrectes sont conscientes, il y a un nouveau, JS1K à thème de Noël . Je prévois de saisir cette époque, mais je n'ai aucune expérience produisant ce code mini-minificateur. Est-ce que quelqu'un connaît de bonnes ressources pour ce genre de chose? P>
7 Réponses :
Le compilateur de fermeture Google est un bon mini-inform javascript.
Il y a un bon < un href = "http://closure-compiler.appot.com/home" rel = "noreferrer"> outil en ligne pour une utilisation rapide ou vous pouvez télécharger l'outil et l'exécuter dans le cadre d'une construction de site Web Processus. P>
réduire les calculs mathématiques strong> Utilisez la notation scientifique forte> < BR>
DROP Drop Zeroes strong> peut être exprimé comme < Code> Résultat = a> B? x: y code> p> bretelles de goutte strong> PRÉCÉDENCE DE L'OPERATEUR FORT> Coup d'accumulation de variable forte> Pensez en dehors de la boîte forte> source d'origine pour la liste ci-dessus de tours: p> http://thingsinjars.com/post/293/the-Quest-for-extreme-javascript-Minification/ p> p>
Utilisez des références raccourcies à des variables intégrées telles que d = document; w = fenêtre code>. P>
La fonction seinterval code> peut prendre une fonction ou une chaîne. Passez une chaîne pour réduire le nombre de caractères utilisés:
setInterval ('A -; B ++', 10) code>. note em> qui passant dans une chaîne force une invocation d'évaluation afin qu'elle soit plus lente que de passer dans une fonction. p>
Exemple A = B + B + B CODE> peut être réduit à
A = 3 * B CODE>. P>
10000 code> peut être exprimé en notation scientifique comme
1e4 code> sauvegarder 2 octets. p>
0,2 = .2 code> enregistre un octet p>
Les accolades ne sont nécessaires que pour les blocs de plusieurs instructions. P>
Compter sur la priorité de l'opérateur plutôt que d'ajouter des supports inutiles qui facilitent la lisibilité du code. P>
Plutôt que fonction x () {A = 1, b = 2; ...} () code> passe des valeurs dans la fonction,
fonction x (a, b) {...} ( 1,2) code> p>
Ne touchez pas automatiquement les façons standard de faire des choses. Plutôt que d'utiliser d.getelementByID ('P') code> pour obtenir une référence à un élément DOM, pourriez-vous utiliser
b.children [4] code> où
d = document ; B = corps code>. p>
Tout d'abord tout, je viens de lancer votre code dans un mini-informer ne vous aidera pas autant beaucoup. Vous devez avoir la petite taille de fichier extrême lorsque vous écrivez le code. Donc, en partie, vous devez apprendre toutes les tours vous-même. P>
Aussi, quand il s'agit de minificateurs, Uglifyjs est la nouvelle star de tir ici, sa sortie est plus petite que GCC's et c'est bien plus vite aussi. Et comme il est écrit en pure JavaScript, il devrait être trivial pour que vous puissiez découvrir quelles sont toutes les astuces que cela s'applique. P>
Mais à la fin, tout va de même pour que vous puissiez trouver une solution intelligente et petite pour quelque chose qui est génial. P>
Merci - je suis conscient que les minificateurs ne font qu'une partie de la solution. J'espérais que quelqu'un pourrait avoir des conseils sur "les astuces".
Un ami a écrit packer JSCrush pour JS1K. P>
Gardez à l'esprit de garder autant de code aussi semblable que possible. P>
Mon flux de travail pour l'emballage extrême est: Fermeture (jolie imprimée) -> Optimisations des mains, Similaire de la fonction, Autre Code Similarité -> Fermeture (espact uniquement) -> Jscrush. P>
Ceci s'éloigne environ 25% des données. P>
Il y a aussi Packify , mais je n'ai pas testé cela moi-même. P>
Spolto a raison.
Tout meneur de code ne fera pas le tour seul. Vous devez d'abord optimiser votre code, puis faire des modifications manuelles sales.
En plus de la liste des astuces de Spolto, je souhaite encourager l'utilisation d'opérateurs logiques forts> au lieu du classique est un peu équivalent à p> une autre chose à prendre en compte pourrait être DÉCLARATION DE VARIABLE multiple : P> si code>
autre code> Syntaxe. Ex:
Le code suivant p> var a = "eval(''.replace(/function/g,'F'))".length,
b = ('function'.length-'F'.length)*4;
alert("you should" + (a<b?"":" NOT") + " use this technique!");
Ceci est la seule version en ligne de @Cowboy Script Packer 'S: p>
http://iwantaneff.in/packer/ p>
très pratique pour l'emballage / minier JS P>
Lien brisé :-(
Aussi: p>
Packer Dean Edwards http://dean.edwards.name/packer/ p>
UGLIFY JS http://marijnhaverbeke.nl/uglifyjs p>
Dans le lien suivant, vous trouverez des astuces étonnamment bonnes pour minifier le code JS pour ce concours:
Un exemple: (extrait de la section opérateurs de court-circuit strong>): P> ou plus essoticérique TRUK Contexte de contexte de toile strong>: p> et voici une autre liaison de ressource avec incroyablement bonnes astuces: https://github.com/jed/140bytes/wiki/byte- Techniques de sauvegarde p> p>