2008-09-13 46 views
6

Bạn có thể chia sẻ kinh nghiệm gì về việc sử dụng nhiều thư viện AJAX?Các chiến lược tốt nhất để sử dụng nhiều thư viện AJAX là gì?

Có các tính năng hữu ích trong Prototype, một số trong jQuery, thư viện Yahoo, v.v. Có thể bao gồm tất cả thư viện và sử dụng những gì bạn muốn từ mỗi thư viện, chúng thường chơi độc đáo cùng với không gian tên, v.v. vì lợi ích của tốc độ là có một giới hạn thực tế để kích thước/số lượng các thư viện để bao gồm hoặc là điều này không đáng kể? Có các cặp hoạt động đặc biệt tốt với nhau không (ví dụ: Prototype/Scriptaculous) hoặc các cặp không hoạt động?

Trả lời

9

Bạn có thể sử dụng tất cả các thư viện đó, nhưng tôi khuyên bạn nên chống lại nó.Việc tải xuống và thực thi nhiều JavaScript sẽ rất có thể sẽ làm hỏng trình duyệt và làm chậm trải nghiệm của người dùng. Nó sẽ tốt hơn nhiều từ quan điểm của người dùng và nhà phát triển để chọn một. Ít ngữ cảnh/kiến ​​trúc chuyển đổi và ít mã hơn để duy trì.

Giống như các câu trả lời khác đã nói, hầu hết đều không xung đột.

Xem trang web Exceptional Performance của Yahoo! Để biết thêm thông tin.

1

Tôi đang sử dụng jQuery và phiên bản tệp javascript của bộ công cụ Microsof ajax cạnh nhau trong dự án ngay bây giờ.

Tôi nghĩ rằng tôi sẽ đi với jQuery và kết thúc loại bỏ Microsoft. Tôi rất mới với jQuery, nhưng tôi càng tìm hiểu về nó, tôi càng say mê.

2

Tôi là một tín đồ jQuery là tốt, vì thế tha thứ tôi thiếu hiểu biết về những người khác, nhưng ...

Điều gì làm cho jQuery tuyệt vời như vậy là chế độ không có xung đột, ví dụ như vậy, bạn sẽ làm gì :

$('#foobar').whatever(); 

Khi không có xung đột mode, bạn muốn làm điều này:

var jq = jQuery.noConflict(); 
jq('#foobar').whatever(); 

Một ít điều phải lo lắng. Tôi muốn tưởng tượng nguyên mẫu cung cấp một tính năng tương tự, và Yahoo là tốt. Tuy nhiên, tôi không muốn ủng hộ jQuery quá nhiều và làm cho mọi người phát điên, nhưng bất cứ thư viện nào bạn chọn, tôi nghĩ tất cả họ đều có thể làm khá nhiều thứ bạn cần. Đặc biệt nghĩ về lợi ích của không phải tìm hiểu ba thư viện khác nhau.

Tất cả ba phải có khả năng. Chọn cái bạn thích nhất và mở rộng nó. :)

+0

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 đó. –

+0

Đố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. –

0

Ruby on Rails sử dụng cả nguyên mẫu và Scriptaculous theo mặc định, vì có rất ít sự chồng chéo giữa hai loại. Tôi cũng đã sử dụng đoạn trích yui ngoài điều đó và chưa bao giờ gặp sự cố. Thời gian tải là một vấn đề, nhưng các thư viện thường được lưu trữ, vì vậy nó chỉ được tải trên trang đầu tiên.

+1

Scriptaculous là một ADDON để thử nghiệm. Đó là lý do tại sao họ làm việc tốt với nhau. – Till

3

YUI khá mạnh, không được đặt tên nên không được đụng độ với các thư viện khác.

Như đã đề cập, bạn có thể chạy jQuery ở chế độ không xung đột.

Nguyên mẫu hiện có một số vấn đề đang phát đẹp với các thư viện khác một phần vì nó (hoặc được sử dụng để) sửa đổi đối tượng lõi như Array. Protosafe cố gắng giải quyết các vấn đề đó.

Script.aculo.us chỉ đơn giản là một thư viện tiện ích nằm trên đầu trang của Prototype để hai người đó rõ ràng nên chơi độc đáo với nhau.

Tất cả điều này có nghĩa là bạn có thể sử dụng YUI, jQuery, Prototype & Script.aculo.us trong ứng dụng của bạn, nhưng bạn có thể thấy rằng việc sử dụng một thư viện duy nhất làm cho nó dễ dàng hơn nhiều để duy trì điều đó.

4

Bạn có thể sử dụng Google AJAX Libraries API. Nó cung cấp một mạng lưới phân phối chung và một kiến ​​trúc tải cho jQuery, Prototype, script.aculo.us, MooTools và Dojo

1

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ớ.

Các vấn đề liên quan