Ini tahun 2014 dan beberapa tahun sudah terlambat. Tetap saya pikir poin saya berpendapat:
IMHO diskusi ini menjadi tidak proporsional sedikit. Mengutip posting blog yang disebutkan di atas :
Sebagian besar pustaka utilitas JavaScript, seperti Underscore, Valentine, dan wu, mengandalkan "pendekatan ganda asli-pertama." Pendekatan ini lebih memilih implementasi asli, kembali ke JavaScript vanilla hanya jika setara asli tidak didukung. Tetapi jsPerf mengungkapkan tren yang menarik: cara paling efisien untuk beralih pada array atau koleksi mirip array adalah untuk menghindari implementasi asli sepenuhnya, memilih loop sederhana sebagai gantinya.
Seolah-olah "loop sederhana" dan "vanila Javascript" lebih asli daripada implementasi metode objek. Astaga ...
Pasti menyenangkan memiliki satu sumber kebenaran, tetapi tidak ada. Bahkan jika Anda diberitahu sebaliknya, tidak ada Dewa Vanilla, sayangku. Maafkan saya. Satu-satunya asumsi yang benar-benar berlaku adalah bahwa kita semua menulis kode Javascript yang bertujuan untuk berkinerja baik di semua browser utama, mengetahui bahwa mereka semua memiliki implementasi yang berbeda dari hal-hal yang sama. Itu menyebalkan untuk diatasi, untuk membuatnya lebih halus. Tapi itu premis, apakah Anda suka atau tidak.
Mungkin Anda semua sedang mengerjakan proyek skala besar yang membutuhkan kinerja twitterish sehingga Anda benar-benar melihat perbedaan antara 850.000 (garis bawah) vs 2.500.000 (pengalihan) pengulangan atas daftar per detik sekarang!
Untuk satu aku tidak. Maksud saya, saya mengerjakan proyek di mana saya harus mengatasi masalah kinerja, tetapi mereka tidak pernah diselesaikan atau disebabkan oleh Underscore maupun Lo-Dash. Dan kecuali saya memahami perbedaan nyata dalam implementasi dan kinerja (kita berbicara C + + sekarang) dari katakanlah loop atas iterable (objek atau array, jarang atau tidak!), Saya lebih suka tidak terganggu dengan klaim berdasarkan hasil platform patokan yang sudah disetujui .
Hanya perlu satu pembaruan tunggal katakanlah Badak untuk mengatur implementasi metode Array dengan cara yang tidak satu pun "metode loop abad pertengahan berkinerja lebih baik dan selamanya dan yang lainnya" imam dapat berdebat tentang fakta sederhana bahwa semua metode array tiba-tiba dalam FF jauh lebih cepat daripada brainfuck yang dikemukakannya. Man, Anda tidak bisa menipu lingkungan runtime Anda dengan menipu lingkungan runtime Anda! Pikirkan tentang itu ketika mempromosikan ...
sabuk utilitas Anda
... lain kali.
Jadi agar tetap relevan:
- Gunakan Garis Bawah jika Anda suka kenyamanan tanpa mengorbankan ish asli.
- Gunakan Lo-Dash jika Anda menyukai dan menyukai katalog fitur yang diperluas (penyalinan dalam dll.) Dan jika Anda sangat membutuhkan kinerja instan dan yang paling penting tidak keberatan menentukan alternatif segera setelah keaslian API asli workaurounds beralasan. Yang akan segera terjadi. Titik.
- Bahkan ada solusi ketiga. DIY! Ketahui lingkungan Anda. Ketahui tentang inkonsistensi. Baca kode mereka ( John-David dan Jeremy ). Jangan gunakan ini atau itu tanpa bisa menjelaskan mengapa lapisan konsistensi / kompatibilitas sangat diperlukan dan meningkatkan alur kerja Anda atau meningkatkan kinerja aplikasi Anda. Sangat mungkin bahwa persyaratan Anda dipenuhi dengan polyfill sederhana yang bisa Anda tulis sendiri. Kedua perpustakaan itu hanyalah vanila biasa dengan sedikit gula. Mereka berdua hanya memperebutkan siapa yang menyajikan pie termanis . Tapi percayalah, pada akhirnya keduanya hanya memasak dengan air. Tidak ada Dewa Vanilla jadi tidak mungkin ada paus Vanilla, kan?
Pilih pendekatan apa pun yang paling sesuai dengan kebutuhan Anda. Seperti biasa. Saya lebih suka fallback pada implementasi aktual daripada curang runtime yang disarankan kapan saja tetapi bahkan itu tampaknya menjadi masalah selera saat ini. Tetap berpegang pada sumber daya berkualitas seperti http://developer.mozilla.com dan http://caniuse.com dan Anda akan baik-baik saja.