Chiến lược tốt nhất là để không sử dụng nhiều thư viện. Thật là hấp dẫn khi muốn ném thêm nhiều thư viện vào một vấn đề, nhưng nó không hiệu quả, dễ bị lỗi và làm cho mã của bạn khó khăn hơn để duy trì bởi những người khác.
Trong hầu hết các trường hợp, bạn có thể tránh sử dụng nhiều thư viện bằng cách hiểu miền vấn đề của bạn và thư viện nào sẽ giúp bạn giải quyết tốt nhất. Ngoài ra còn có vô số các plugin và phần mở rộng cho tất cả các thư viện này.
Ví dụ: JQuery hỗ trợ các cuộc gọi JSONP nhiều miền ngay ngoài hộp và có thư viện tiện ích con đẹp trong JQueryUI, Prototype không.
$.getJSON('http://anothersite.com/mashup.json?callback=?', function(data) { });
Nguyên mẫu có hỗ trợ OO thực sự tốt và dễ dàng đi qua DOM, nhưng thiếu một số chức năng tên miền chéo cần thiết để tạo tiện ích con và kết hợp.
var Foo = Class.create({
initialize: function(name) {
this.name = name;
}
});
var Bar = Class.create(Foo, {
initialize: function($super, name) {
$super(name);
}
});
Mootools có hiệu ứng tuyệt vời, hỗ trợ OO tốt, vật dụng thực sự vững chắc và yêu cầu miền chéo, nhưng (và điều này chỉ có thể là ấn tượng của tôi), cộng đồng phát triển không phải là hợp tác và xã hội với cộng đồng toàn cầu (bên ngoài mootools) như các cộng đồng khác (Prototype được sử dụng để được theo cách này). Điều này có thể là kết quả của các nhà phát triển chính của họ (s) sống bên ngoài nước Mỹ, và do đó không thể tham dự như nhiều hội nghị và tham gia vào cộng đồng lớn hơn. Tôi sẽ không để cho điều đó ngăn cản bạn hoàn toàn mặc dù, nhưng nó là cái gì đó để ghi nhớ.
Nguyên mẫu AFAIK không có tính năng như vậy. jQuery không gian tên tất cả mọi thứ bên trong đối tượng "jQuery", và Prototype có các chức năng của nó nằm rải rác trên hàng chục lớp tùy chỉnh và được xây dựng trong, do đó, nó sẽ rất khó để làm điều đó. –
Đối với Yahoo, nếu tôi nhớ chính xác nó giấu mọi thứ bên trong một không gian tên gọi là "yahoo" hoặc một cái gì đó, do đó, nó không thực sự xung đột với bất cứ điều gì theo mặc định. –