Dies ist 2014 und ein paar Jahre zu spät. Trotzdem denke ich, dass mein Punkt gilt:
IMHO wurde diese Diskussion ziemlich überproportional. Zitieren des oben genannten Blogposts :
Die meisten JavaScript-Dienstprogrammbibliotheken wie Underscore, Valentine und wu basieren auf dem "Native-First-Dual-Ansatz". Dieser Ansatz bevorzugt native Implementierungen und greift nur dann auf Vanille-JavaScript zurück, wenn das native Äquivalent nicht unterstützt wird. JsPerf zeigte jedoch einen interessanten Trend: Der effizienteste Weg, über ein Array oder eine Array-ähnliche Sammlung zu iterieren, besteht darin, die nativen Implementierungen vollständig zu vermeiden und stattdessen einfache Schleifen zu wählen.
Als ob "einfache Schleifen" und "Vanille-Javascript" nativer sind als Implementierungen von Array- oder Objektmethoden. Herrgott ...
Es wäre sicherlich schön, eine einzige Quelle der Wahrheit zu haben, aber es gibt keine. Selbst wenn Ihnen etwas anderes gesagt wurde, gibt es keinen Vanille-Gott, mein Lieber. Es tut mir Leid. Die einzige Annahme, die wirklich zutrifft, ist, dass wir alle Javascript-Code schreiben, der darauf abzielt, in allen gängigen Browsern eine gute Leistung zu erzielen, da wir wissen, dass alle unterschiedliche Implementierungen derselben Dinge haben. Es ist eine Schlampe, mit der man fertig werden muss, um es milde auszudrücken. Aber das ist die Voraussetzung, ob Sie es mögen oder nicht.
Vielleicht arbeiten Sie an großen Projekten, die eine Twitter-Performance benötigen, damit Sie den Unterschied wirklich erkennen jetzt zwischen 850.000 (Unterstrich) und 2.500.000 (Lodash) Iterationen über eine Liste pro Sekunde sehen können !
Ich jedenfalls bin es nicht. Ich meine, ich habe Projekte bearbeitet, bei denen ich Leistungsprobleme angehen musste, aber sie wurden weder von Underscore noch von Lo-Dash gelöst oder verursacht. Und wenn ich nicht die wirklichen Unterschiede in Implementierung und Leistung (wir sprechen gerade von C ++) einer Schleife über ein iterables Element (Objekt oder Array, spärlich oder nicht!) Habe, störe ich lieber nicht mit irgendwelchen Ansprüche basierend auf den Ergebnissen einer Benchmark-Plattform, die bereits bewerteten .
Es ist nur ein einziges Update von beispielsweise Rhino erforderlich, um die Implementierungen der Array-Methode so in Brand zu setzen, dass kein einziger "mittelalterlicher Loop-Methode besser und für immer funktioniert und so weiter" Priester sich über die einfache Tatsache streiten kann, dass alle Ein plötzliches Array-Verfahren in FF ist viel schneller als sein / ihr meinungsgebundener Brainfuck. Mann, du kannst deine Laufzeitumgebung einfach nicht betrügen, indem du deine Laufzeitumgebung betrügst! Denken Sie darüber nach, wenn Sie ...
Ihr Versorgungsgürtel
... nächstes Mal.
Um es relevant zu halten:
- Verwenden Sie Unterstrich, wenn Sie es bequem haben, ohne auf native ish zu verzichten.
- Verwenden Sie Lo-Dash, wenn Sie sich für Komfort interessieren und den erweiterten Funktionskatalog (Deep Copy usw.) mögen und wenn Sie dringend sofortige Leistung benötigen und es vor allem nichts ausmacht, sich für eine Alternative zu entscheiden, sobald die native API überstrahlt Meinungsumgehungen. Was bald passieren wird. Zeitraum.
- Es gibt sogar eine dritte Lösung. DIY! Kennen Sie Ihre Umgebungen. Kennen Sie Inkonsistenzen. Lesen Sie den Code ( John-David und Jeremy ). Verwenden Sie dies oder jenes nicht, ohne erklären zu können, warum eine Konsistenz- / Kompatibilitätsschicht wirklich benötigt wird und Ihren Workflow verbessert oder die Leistung Ihrer App verbessert. Es ist sehr wahrscheinlich, dass Ihre Anforderungen mit einer einfachen Polyfüllung erfüllt sind, die Sie perfekt selbst schreiben können. Beide Bibliotheken sind einfach Vanille mit etwas Zucker. Beide streiten sich nur darum, wer den süßesten Kuchen serviert . Aber glauben Sie mir, am Ende kochen beide nur mit Wasser. Es gibt keinen Vanille-Gott, also kann es keinen Vanille-Papst geben, oder?
Wählen Sie den Ansatz, der Ihren Anforderungen am besten entspricht. Wie gewöhnlich. Ich würde jederzeit Fallbacks bei tatsächlichen Implementierungen gegenüber bestimmten Laufzeit-Cheats bevorzugen, aber selbst das scheint heutzutage Geschmackssache zu sein. Halten Sie sich an hochwertige Ressourcen wie http://developer.mozilla.com und http://caniuse.com, und alles wird gut.