Nous sommes en 2014 et quelques années trop tard. Je pense toujours que mon argument est valable:
À mon humble avis, cette discussion a été assez disproportionnée. Citant le billet de blog susmentionné :
La plupart des bibliothèques d'utilitaires JavaScript, telles que Underscore, Valentine et wu, reposent sur la «double approche native-first». Cette approche préfère les implémentations natives, ne retombant dans le JavaScript vanilla que si l'équivalent natif n'est pas pris en charge. Mais jsPerf a révélé une tendance intéressante: la façon la plus efficace d'itérer sur un tableau ou une collection de type tableau est d'éviter complètement les implémentations natives, en optant plutôt pour des boucles simples.
Comme si les "boucles simples" et le "vanilla Javascript" étaient plus natifs que les implémentations de méthodes Array ou Object. Bon sang ...
Ce serait certainement bien d'avoir une seule source de vérité, mais il n'y en a pas. Même si on vous a dit le contraire, il n'y a pas de Dieu vanille, ma chère. Je suis désolé. La seule hypothèse qui tient vraiment est que nous écrivons tous du code Javascript qui vise à bien fonctionner dans tous les principaux navigateurs, sachant que tous ont des implémentations différentes des mêmes choses. C'est une chienne à gérer, pour le moins. Mais c'est la prémisse, que cela vous plaise ou non.
Peut-être que vous travaillez tous sur des projets à grande échelle qui nécessitent des performances Twitterish afin que vous puissiez vraiment voir la différence entre 850 000 (soulignement) et 2 500 000 (lodash) itérations sur une liste par seconde en ce moment!
Pour ma part, je ne le suis pas. Je veux dire, j'ai travaillé sur des projets où je devais résoudre des problèmes de performances, mais ils n'ont jamais été résolus ou causés par ni Underscore ni Lo-Dash. Et à moins que je ne comprenne les vraies différences d'implémentation et de performances (nous parlons en ce moment de C ++) de disons une boucle sur un itérable (objet ou tableau, clairsemé ou non!), Je ne me soucie pas du tout des revendications basées sur les résultats d'une plateforme de référence déjà jugée .
Il n'a besoin que d'une seule mise à jour de, disons Rhino, pour mettre le feu à ses implémentations de méthode Array d'une manière qu'aucun prêtre "des méthodes de boucle médiévales ne fonctionne mieux et pour toujours et ainsi de suite". une méthode de tableau soudaine dans FF est beaucoup plus rapide que son brainfuck opiniâtre. Man, vous ne pouvez tout simplement pas tromper votre environnement d'exécution en trichant votre environnement d'exécution! Pensez-y lorsque vous faites la promotion ...
votre ceinture utilitaire
... la prochaine fois.
Donc, pour rester pertinent:
- Utilisez Underscore si vous préférez sans sacrifier l'isch natif.
- Utilisez Lo-Dash si vous aimez la commodité et aimez son catalogue de fonctionnalités étendu (copie complète, etc.) et si vous avez désespérément besoin de performances instantanées et, surtout, cela ne vous dérange pas de vous contenter d'une alternative dès que l'API native est dépassée contournements d'opinion. Ce qui va arriver bientôt. Période.
- Il y a même une troisième solution. DIY! Connaissez vos environnements. Connaître les incohérences. Lisez leur code ( John-David et Jeremy ). N'utilisez pas ceci ou cela sans être en mesure d'expliquer pourquoi une couche de cohérence / compatibilité est vraiment nécessaire et améliore votre flux de travail ou améliore les performances de votre application. Il est très probable que vos exigences soient satisfaites avec une simple polyfill que vous êtes parfaitement capable d'écrire vous-même. Les deux bibliothèques sont tout simplement de la vanille avec un peu de sucre. Ils se battent tous les deux pour savoir qui sert la tarte la plus sucrée . Mais croyez-moi, au final, les deux ne font que cuisiner avec de l'eau. Il n'y a pas de dieu vanille donc il ne peut pas y avoir de pape vanille, non?
Choisissez l'approche qui correspond le mieux à vos besoins. Comme d'habitude. Je préfère les solutions de repli sur les implémentations réelles aux tricheurs d'exécution d'opinion à tout moment, mais même cela semble être une question de goût de nos jours. Restez fidèle à des ressources de qualité comme http://developer.mozilla.com et http://caniuse.com et tout ira bien.