BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Lodash, la Bibliothèque JavaScript que vous utilisez déja

Lodash, la Bibliothèque JavaScript que vous utilisez déja

La bibliothèque JavaScript, lodash, est maintenant en version 3.5 et est devenu le package le plus utilisé parmi tous ceux disponibles via le gestionnaire de package npm, abandonnant ainsi son statut d'outsider pour devenir le choix privilégié.

Lodash a démarré comme un fork de Underscore.js - le résultat d'une divergence d'opinion entre les contributeurs. Le but initial, dirigé par John-David Dalton, était de fournir une solution "fiable sur tous les navigateurs ... et d'améliorer les performances". Depuis, le projet a continué d'aller de succès en succès pour atteindre sa version 3.0 en janvier.

Lodash, comme Underscore avant lui, est nommé comme le caractère qui unit toutes les fonctions de celui-ci. Tout comme jQuery, qui attache toutes ses fonctions à la variable globale $, lodash utilise la variable globale _ pour permettre un accès rapide à tous ses utilitaires. Par exemple, pour exécuter une action sur tous les éléments d'un tableau :

_.each([1, 2], function(n) { console.log(n); });

La version 3 apporte de nombreux changements, dont l'ajout de 47 nouvelles méthodes comme _.camelCase et _.flattenDeep. Un des changements les plus marquants est le passage à un mode permettant de chaîner les appels à lodash pour écrire en séquence différentes opérations :

var users = [
  { 'user': 'barney',  'age': 36 },
  { 'user': 'fred',    'age': 40 },
  { 'user': 'pebbles', 'age': 1 }
];

var youngest = _.chain(users)
  .sortBy('age')
  .map(function(chr) {
    return chr.user + ' is ' + chr.age;
  })
  .first()
  .value();
// → 'pebbles is 1'

Dans une interview accordée à InfoQ, Dalton explique l'utilisation d'une évaluation différée qui permet d'optimiser les performances :

L'évaluation différée signifie que la chaîne de méthodes n'est exécutée que lorsqu'un appel explicite ou implicite à value() est effectué. Comme l'exécution est différée, lodash peut effectuer des optimisations comme le raccourci par fusion (ndt: shortcut fusion), ce qui peut grandement réduire le nombre d'itérations en fusionnant les opérations chaînées.

Filip Zawada décrit comment le changement peut apporter des améliorations de performances considérables.

Initialement, lodash avait démarré comme un simple substitut à Underscore, mais avec la version 3.0, il n'y a plus de build spécifique à Underscore. "Nous continuerons d'exécuter les tests unitaires d'Underscore/Backbone, mais avec lodash 3, nous ne supportons plus de build séparé pour Underscore/Backbone build," explique Dalton.

Durant l'année passée, nous avons vu Underscore s'aligner de plus en plus sur l'API lodash, ce qui explique que le besoin d'un build séparé soit de moins en moins nécessaire. Si des développeurs ont malgré tout besoin de cette compatibilité, nous recommandons l'utilisation de modules complémentaires de lodash v3.

Plusieurs packages npm majeurs dépendent maintenant de lodash, tels que le transpiler JavaScript Babel, la plateforme de blog Ghost et l'outil de scaffolding Yeoman. Dans le cas de Ghost, le projet utilisait au départ Underscore, puis est passé à lodash. Nous avons interrogé John O'Nolan, le concepteur de Ghost sur ce choix et sa réponse a été la suivante : "Ce fut une décision purement pragmatique, motivée par les recommandations de notre communauté open source".

Nous trouvons que lodash a plus de fonctionnalités, de meilleures performances, une meilleure utilisation de semver, et est en train de devenir incontournable dans toute la communauté Node.js (dont son inclusion dans plusieurs autres de nos dépendances).

Bien que lodash soit populaire parmi les développeurs node.js, il est aussi très utilisé dans de nombreux projets web. Les développeurs web peuvent tester l'outil de build expérimental afin de sélectionner les méthodes dont ils ont besoin dans leur projet, plutôt que de charger l'intégralité de la bibliothèque. Pour les projets node.js, des méthodes individuelles peuvent être incluses lorsque l'ensemble du package n'est pas nécessaire.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT