Quelques trucs sur Javascript #1

Packed VS minified

Il existe deux méthodes couramment utilisée pour alléger les javascripts :

  • En les "compactant" : le code est alors ré-écrit en une version nettement plus compacte et surtout nettement moins lisible.
  • En utilisant jSmin : là le script est juste allégé de tous ses commentaires et espaces superflus. Il est moins compact mais reste cependant relativement lisible.

En général la version "compactée" est environ un tiers moins lourde que la version "minifiée" mais en contrepartie, l'exécution est presque deux fois plus lente. Et donc le ressenti côté utilisateur est nettement dégradé dans la version compactée. La version minifiée est donc en général préférable, d'autant que pour le debug c'est nettement plus pratique !

La fonction parseInt

Cette fonction permet, comme son nom l'indique, de convertir une chaine en entier. A priori rien de bien compliqué. Son deuxième paramètre permet de spécifier la base dans laquelle on se place. Rien de compliqué non plus.

Là où ça peut un peu plus surprendre si on lit la doc trop rapidement, c'est qu'en l'absence du deuxième paramètre, si la chaine commence par un zéro, la conversion se fait en octale, soit en base huit et non dix. Cette fonctionnalité semble être dépréciée mais elle est toujours prise en compte.

On a donc les résultats suivants :

  • parseInt("000") -> 0
  • parseInt("001") -> 1
  • parseInt("002") -> 2
  • parseInt("003") -> 3
  • parseInt("004") -> 4
  • parseInt("005") -> 5
  • parseInt("006") -> 6
  • parseInt("007") -> 7
  • parseInt("008") -> 0
  • parseInt("009") -> 0
  • parseInt("010") -> 8
  • parseInt("011") -> 9
  • ...

La console d'erreur de Firefox

Dans un contexte d'extension (ou au moins dans un contexte signé il me semble), il est possible d'écrire des messages dans la console d'erreur de Firefox via JavaScript.

Par contre (du moins dans certaines versions), tenter de loguer un message vide fait planter la console. Elle continue à accumuler les message mais il faut la fermer et la rouvrir pour les voir. Chose très agaçante quand on ne sait pas d'où ça vient...

Soumettre un commentaire

La soumission de commentaire fonctionne via un envoi de mail à une adresse dédiée, pour plus de précisions sur les raisons de ce fonctionnement atypique vous pouvez consulter cet article.

3 commentaires

Il existe une 3ème méthode, ou plutôt un entre deux.

Les navigateurs utilisent des moteurs d'interprétations du Javacript comme par exemple Rhino (http://www.mozilla.org/rhino/). Or que nous apprennent ces moteurs ? Ben, qu'il transforme le code pour le compacter ET le simplifier. En clair, dans le cas de Rhino, est possible de l'utiliser pour lui demander d'interpréter le code, de la compacter (et bien mieux qu'un compacteur), le rendre moins-lisible et voir...accélérer un peu le code !

La mise en oeuvre de ce "compacteur-haute-gamme" n'est pas des plus aisé (on trouve de la doc sur le net)...mais après, c'est à mon avis la meilleur des solutions

Mes gains vont entre 30 et 50% (!!) de poids en moins :)

parseInt est un bon exemple : je recommande fortement la vérification régulière de son code JS avec JSLint (http://www.jslint.com/, écrit par l'inventeur du Javascript him-self).
L'absence du 2ème param dans parseInt est classé comme une "error" :)

Tiens, je ne connaissais pas rhino, faudra que je regarde ce qu'il sait faire niveau compression ^^

Quand à JSLint, la page me dit quelque chose, j'ai déjà dû tomber dessus un jour :p Mais j'avais plus l'adresse ^^

Merci