Đây là năm 2014 và một vài năm quá muộn. Tôi vẫn nghĩ rằng quan điểm của tôi là:
IMHO cuộc thảo luận này đã bị thổi ra khỏi tỷ lệ khá nhiều. Trích dẫn bài viết trên blog nói trên :
Hầu hết các thư viện tiện ích JavaScript, chẳng hạn như Underscore, Valentine và wu, đều dựa vào cách tiếp cận kép đầu tiên của bản địa. Cách tiếp cận này thích các triển khai gốc hơn, chỉ quay lại JavaScript vanilla nếu không hỗ trợ tương đương gốc. Nhưng jsPerf đã tiết lộ một xu hướng thú vị: cách hiệu quả nhất để lặp lại một bộ sưu tập giống như mảng hoặc là tránh hoàn toàn các triển khai gốc, thay vào đó chọn các vòng lặp đơn giản.
Như thể "các vòng lặp đơn giản" và "vanilla Javascript" có nguồn gốc hơn các triển khai phương thức Array hoặc Object. Trời ...
Chắc chắn sẽ rất tốt nếu có một nguồn sự thật, nhưng không có. Ngay cả khi bạn được nói khác đi, không có Thần Vanilla, em yêu. Tôi xin lỗi. Giả định duy nhất thực sự đúng là tất cả chúng ta đều đang viết mã Javascript nhằm mục đích hoạt động tốt trong tất cả các trình duyệt chính, biết rằng tất cả chúng đều có các triển khai khác nhau của cùng một thứ. Đó là một con chó cái để đối phó với, để nói một cách nhẹ nhàng. Nhưng đó là tiền đề, dù bạn có thích hay không.
Có thể bạn đang làm việc trên các dự án quy mô lớn cần hiệu suất twitter để bạn thực sự thấy sự khác biệt giữa 850.000 (gạch dưới) so với 2.500.000 (lặp lại) trong một danh sách mỗi giây ngay bây giờ!
Tôi cho một người không. Ý tôi là, tôi đã làm việc với các dự án mà tôi phải giải quyết các vấn đề về hiệu suất, nhưng chúng không bao giờ được giải quyết hoặc gây ra bởi cả Underscore và Lo-Dash. Và trừ khi tôi nắm được sự khác biệt thực sự trong triển khai và hiệu suất (chúng ta đang nói về C ++ ngay bây giờ), hãy nói một vòng lặp trên một vòng lặp (đối tượng hoặc mảng, thưa thớt hay không!), Tôi không bị làm phiền với bất kỳ khiếu nại dựa trên kết quả của một nền tảng chuẩn đã được quan tâm .
Rhino chỉ cần một bản cập nhật duy nhất cho phép Rhino thiết lập các triển khai phương thức Array của mình theo cách mà không một phương thức "vòng lặp thời trung cổ nào hoạt động tốt hơn và mãi mãi" và linh mục có thể tranh luận theo cách của mình xung quanh sự thật đơn giản rằng tất cả một phương thức mảng đột ngột trong FF nhanh hơn nhiều so với phương pháp cân não của anh ấy / cô ấy. Man, bạn không thể lừa dối môi trường thời gian chạy của bạn bằng cách gian lận môi trường thời gian chạy của bạn! Hãy nghĩ về điều đó khi quảng bá ...
vành đai tiện ích của bạn
... lần tới.
Vì vậy, để giữ cho nó có liên quan:
- Sử dụng Underscore nếu bạn thuận tiện mà không phải hy sinh bản địa.
- Sử dụng Lo-Dash nếu bạn thấy thuận tiện và thích danh mục tính năng mở rộng của nó (bản sao sâu, v.v.) và nếu bạn đang rất cần hiệu suất tức thì và quan trọng nhất là đừng bận tâm đến việc thay thế ngay khi API gốc workauround ý kiến. Điều đó sẽ xảy ra sớm. Giai đoạn = Stage.
- Thậm chí còn có một giải pháp thứ ba. Tự làm! Biết môi trường của bạn. Biết về sự không nhất quán. Đọc mã của họ ( John-David và Jeremy ). Không sử dụng cái này hoặc cái kia mà không thể giải thích tại sao một lớp nhất quán / tương thích là thực sự cần thiết và tăng cường quy trình làm việc của bạn hoặc cải thiện hiệu suất của ứng dụng của bạn. Rất có khả năng các yêu cầu của bạn được thỏa mãn với một polyfill đơn giản mà bạn hoàn toàn có thể tự viết. Cả hai thư viện chỉ là vani đơn giản với một chút đường. Cả hai chỉ chiến đấu vì những người phục vụ những chiếc bánh ngọt ngào nhất . Nhưng tin tôi đi, cuối cùng cả hai chỉ nấu với nước. Không có Thần Vanilla nên không thể không có giáo hoàng Vanilla, phải không?
Chọn bất cứ cách tiếp cận nào phù hợp với nhu cầu của bạn nhất. Như thường lệ. Tôi thích dự phòng cho việc triển khai thực tế hơn gian lận thời gian chạy có ý kiến bất cứ lúc nào nhưng ngay cả điều đó dường như là một vấn đề của hương vị ngày nay. Bám sát các tài nguyên chất lượng như http://developer.mozilla.com và http://caniuse.com và bạn sẽ ổn thôi.