S'il vous plaît noter que cette question est destinée à être un peu plus sur le côté de la théorie du sujet, mais en plus de l'espace de décapage quelles autres techniques sont utilisées pour JavaScript Compression?Quelles techniques les bibliothèques de compression JavaScript utilisent-elles pour réduire la taille du fichier?
Répondre
La plupart des compresseurs utilisent une combinaison de différentes techniques:
- décapage
- espaces blancs fichier par compress algorythme de compression (gzip, dégonfler)
- la majeure partie de l'espace est enregistré renommant les variables interall et fonction à des noms plus courts, par exemple:
Cette fonction:
function func (variable) {
var temp = 2 * variable;
return temp;
}
deviendra:
function func (a) {
var b = 2 * a;
return b;
}
- Dean Edwards packer utilise une compression interne. Le script est décompressé lorsqu'il est chargé sur la page.
- Tous les trucs habituels pour faire une programmcode plus courte:
- supprimer le code utilisé
- fonction inline
Je ne peux nommer que quelques-uns qui se trouvent dans Google Web compilateur Toolkit:
- Inline appels de méthode
- Mort Code de l'élimination
- renommage/source obscurcissement
- cela signifie la réécriture variables longues à courtes et ainsi de suite
La quasi-totalité d'entre eux nécessite l'analyse Javascript (c'est-à-dire qu'ils travaillent au-delà d'une analyse lexicale pure).
Cette partie de code mort me fait peur, comment GWT ne sait que le code est mort quand JS a une portée mondiale? Ou GWT est-il conçu pour compiler tous vos JS à la fois, et ne fonctionne pas si vous l'exécutez sur un seul de vos fichiers JS multiples? –
GWT est un compilateur monolithique, donc en ajoutant quelques restrictions à ce que vous pouvez faire dans java, il peut déterminer avec précision si une méthode est appelée ou non (similaire à ce que vous pouvez faire avec eclipse ide). –
Du haut de ma tête ...
- Tokenizes variables locales et les renomme à une variable de taille minimale.
- Supprime des tonnes d'espaces.
- Supprime les accolades inutiles (par exemple, les exécutions sur une seule ligne après que les instructions if peuvent supprimer des accolades et ajouter un seul point-virgule).
- Supprime les points-virgules inutiles (par exemple, juste avant une accolade de fin '}').
Mon minifier le plus couramment utilisé est le YUI Compressor et as they state, il est open source afin que vous puissiez jeter un oeil pour vous-même exactement ce qu'ils font. (Je ne sais pas ce qu'ils veulent dire par « micro-optimisations », probablement un tas de rares cas que vous gagnez un caractère ou deux.)
et réordonnancement de sorte que le compresseur gzip aura un meilleur résultat.
par exemple (pas si intelligent)
Code d'origine:
function mul(mul1, mul2)
{
return mul1 * mul2;
}
function print(str)
{
// do something
}
function add(add1, add2)
{
return add1 + add2;
}
modifier le code:
function mul(a,b)
{
return a * b;
}
function add(a, b)
{
return a + b;
}
function print(str)
{
// do something
}
- 1. Réduire la taille du fichier SWF
- 2. Bibliothèques de compression pour Ruby?
- 3. Bibliothèques de compression LZH
- 4. Outils pour réduire la taille HTML générée
- 5. Java - taille de la compression output-byteArray
- 6. Détermination de la taille du fichier image + dimensions via Javascript?
- 7. Quelles sont les bonnes techniques pour tester les performances des parties Web et des contrôles SharePoint?
- 8. en utilisant la structure RSL pour réduire la taille de fichier SWF
- 9. Réduire la complexité du code pour GWT
- 10. Bibliothèques JavaScript pour détecter les capacités/plug-ins du navigateur
- 11. Créer une vignette et réduire la taille de l'image
- 12. taille de fichier de la bibliothèque partagée
- 13. Comment optimiser la taille du fichier PDF?
- 14. Comment réduire la taille du fichier d'index d'un dossier en NTFS?
- 15. quelles bibliothèques, données, algorithmes existent pour la simulation de peinture?
- 16. Astuces et techniques générales pour minimiser la taille des applications Flex
- 17. Réduire la fenêtre du navigateur à l'aide de javascript
- 18. réduire la taille de la trame de sélénium
- 19. IntelliSense pour les bibliothèques Ajax et JavaScript dans Visual Studio
- 20. "Carriage Return" est supprimé lors de la compression du fichier
- 21. Quelles bibliothèques/frameworks réseau existent pour Python?
- 22. La taille du fichier de jQuery
- 23. Quelles sont les techniques pour limiter les dépendances de compilation dans les projets C++?
- 24. Réduire le format de la page
- 25. Quelles sont les bibliothèques inter-langues pour les personnes qui connaissent d'autres langues (similaire à phpjs)
- 26. Modifier la taille de l'image avec du code JavaScript
- 27. Taille du fichier binaire
- 28. Techniques pour supprimer les dépendances?
- 29. Comment obtenir la commande find pour imprimer la taille du fichier avec le nom du fichier?
- 30. Blackberry réduire la taille de la police pour entrer dans la rangée fieldfield
Deviendra: fonction f (a) {return 2 * a;};) de 72 caractères à 27 –
si vous voulez utiliser func sur la portée globale javascript je laisserais le nom tel quel ... ;-) – TheHippo