Underscore.js và jQuery có bổ sung cho nhau không? [đóng cửa]


92

Tôi mới bắt đầu học JavaScript và tình cờ gặp Underscore.jsjQuery . Dấu gạch dưới trông thực sự tuyệt vời nhưng tôi tự hỏi liệu jQuery chưa cung cấp các chức năng tương tự như Dấu gạch dưới. Vì vậy, có đáng để sử dụng cả hai không?


6
Đoạn đầu tiên trên trang chủ của họ nói - "Đó là sự ràng buộc để đi cùng với bộ tux của jQuery và dây treo của Backbone.js."
Anurag

12
vâng, nhưng tôi nghĩ điều mà op chỉ ra với từ "bổ sung" là vì nhiều chức năng trùng lặp nhau, nên hai khung làm việc thực sự có ý nghĩa với nhau. Ví dụ, sự khác biệt giữa $ .each và _.each đủ tinh tế để khiến bất kỳ ai cũng phải bối rối khi cố gắng kết hợp giữa chúng.
BishopZ

1
Nếu bạn thích underscorejs, sau đó bạn thực sự cần được sử dụng lodash.com
Neil

Câu trả lời:


78

Lấy từ trang web gạch dưới :

Đó là sự ràng buộc để đi cùng với tux của jQuery và dây treo của Backbone.js.

Dấu gạch dưới phù hợp hơn với thao tác dữ liệu và mang lại nhiều phương thức Ruby cho JavaScript. Có một số điểm giao nhau, nhưng không đủ để làm cho chúng loại trừ lẫn nhau.


53
đó là một phong tục rất phù hợp với các khung: P
Anurag


68
  • jQuery sẽ xử lý hầu hết các thao tác dom của bạn
  • backbone.js sẽ giúp bạn tổ chức tất cả mã của mình và cung cấp cho ứng dụng js của bạn một số cấu trúc (mẫu mvc)
  • underscore.js sẽ cung cấp cho bạn tiện ích cấp thấp thực sự hữu ích. Tôi sẽ không bao giờ cần thư viện này cho đến khi tôi thực sự sử dụng các ứng dụng js (nó cũng là một yêu cầu đối với backbone.js)

39

Dấu gạch dưới cung cấp tổng cộng 60 chức năng để xử lý dữ liệu / mã. Đồng ý rằng nhiều chức năng có trong các thư viện khác như jQuery, Prototype hoặc script.aculo.us. Ví dụ, các hàm như each, map, find, filter hoặc toArray đều có trong jQuery. Những thứ này cũng có trong Dấu gạch dưới. Điều này là để làm cho thư viện độc lập với jQuery.

Khi nào sử dụng gạch dưới? :

Hiện tại, nó được sử dụng rộng rãi với Backbone.js để sử dụng kiến ​​trúc MVC để tạo ứng dụng Web Javascript một trang. Khả năng quan trọng nhất của underscore.js là khả năng tạo khuôn mẫu (điều mà jQuery không thể làm được). Thư viện này có nhiều chức năng hữu ích khác, độc lập với các thư viện Javascript khác.

Tìm bên dưới danh sách các chức năng được cung cấp bởi Dấu gạch dưới:

Bộ sưu tập: mỗi, bản đồ, giảm bớt, giảm ngay, tìm, lọc, từ chối, tất cả, bất kỳ, bao gồm, gọi, nhổ, tối đa, tối thiểu, sắp xếpBy, nhómBy, sắp xếpIndex, xáo trộn, toArray, kích thước

Mảng: đầu tiên, ban đầu, cuối cùng, phần còn lại, thu gọn, làm phẳng, không có, liên hợp, giao nhau, khác biệt, uniq, zip, indexOf, lastIndexOf, phạm vi

Chức năng: ràng buộc, ràng buộc, tất cả, ghi nhớ, trì hoãn, trì hoãn, điều tiết, gỡ lỗi, một lần, sau khi, bọc, soạn

Đối tượng: khóa, giá trị, hàm, mở rộng, mặc định, sao chép, chạm, isEqual, isEmpty, isElement, isArray, isArguments, isFunction, isString, isNumber, isBoolean, isDate, isRegExp, isNaN, isNull, isUndefined

Utitity: noConflict, Identity , times, mixin, uniqueId, Escape, template


3
chào Umesh, vì _.template chỉ là một trong số 60 hàm Underscore, điều đó có thực sự đủ để làm cho nó đáng giá không?
tim peterson

@timpeterson, tôi hiểu điều này. nhưng Chúng tôi không chỉ sử dụng _.template, có nhiều chức năng khác cùng với đó như bind, bindAll, mỗi, bản đồ, v.v. Chúng tôi có thể sử dụng nhiều chức năng nhất có thể.
Umesh Patil,

3
nhưng bind, each, map đều có trong jQuery nên có vẻ thừa, phải không?
tim peterson

2
Có Reduce (mà jQuery sẽ không thêm vào ) có lẽ tự nó làm cho nó đáng giá!
Rob Grant

9

Nếu bạn lo lắng về sự chồng chéo và không cần những thứ như JQuery AJAX, thì bạn có thể xem xét chỉ sử dụng công cụ chọn JQuery, có tên là Sizzle.

http://sizzlejs.com/

Lưu ý rằng điều này không dành cho tất cả các dự án, bằng cách sử dụng Sizzle và Underscore, bạn sẽ mất một số chức năng của JQuery (như AJAX), bạn cần xem xét những gì bạn thực sự cần cho ứng dụng cụ thể của mình.


2
project.jga.me/jquery-builder Công cụ này có thể giúp bạn xóa mã jQuery không cần thiết. Ngoài ra, mô-đun lodash có sẵn trên NPM
DigitalDesignDj
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.