2012-04-20 31 views
19

Theo trang web của backbone js:Backbone.js có phụ thuộc nhiều vào jQuery không?

Phụ thuộc duy nhất của xương sống là Underscore.js (> 1.3.1). Đối với sự kiên trì RESTful, hỗ trợ lịch sử thông qua Backbone.Router và thao tác DOM với Backbone.View, bao gồm json2.js và jQuery (1.4.2) hoặc Zepto.

Tôi đã thử nghiệm với mã bên dưới, xóa jQuery và khung nhìn Backbone ném lỗi.

<html> 
<head> 
    <title>asda</title> 


    <!--<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>--> 
    <script src="http://documentcloud.github.com/underscore/underscore.js"></script> 
    <script src="http://documentcloud.github.com/backbone/backbone.js"></script>    
    <script type="text/javascript" charset="utf-8" async defer> 
     SearchView = Backbone.View.extend({ 
      initialize: function(){ 
       alert("Alerts suck."); 
      } 
     }); 

     // The initialize function is always called when instantiating a Backbone View. 
     // Consider it the constructor of the class. 
     var search_view = new SearchView; 
    </script> 
</head> 
<body> 

</body> 
</html> 

Làm thế nào để Backbone.View và Backbone.Router hoạt động mà không cần jQuery?

Trả lời

24

Trong khi Backbone.View phụ thuộc vào Thư viện thao tác DOM, tức là bạn không thể sử dụng javascript vanilla không được sắp xếp vào thư viện sắp xếp, bạn có thể cấu hình Backbone để sử dụng bất kỳ thư viện nào bạn muốn .

Xem sau từ nguồn Backbone:

// Set the JavaScript library that will be used for DOM manipulation and 
// Ajax calls (a.k.a. the `$` variable). By default Backbone will use: jQuery, 
// Zepto, or Ender; but the `setDomLibrary()` method lets you inject an 
// alternate JavaScript library (or a mock library for testing your views 
// outside of a browser). 
Backbone.setDomLibrary = function(lib) { 
    $ = lib; 
}; 

gọi method này sẽ cho phép bạn sử dụng bất cứ thư viện nào bạn muốn.

Ví dụ:

Backbone.setDomLibrary(myCustomLibrary); 
7

Bạn có thể sử dụng Backbone.Model mà không cần jQuery, nhưng Backbone.View sẽ yêu cầu jQuery hoặc Zepto, giống như trạng thái tài liệu.

+1

Cũng 'Backbone.Router' phụ thuộc vào jQuery/Zepto ... – drinchev

+0

Chances của không sử dụng xem và router là đủ thấp. Sẽ được tốt hơn biện minh nó dựa vào jquery/zepto. – TonyTakeshi

6

Cố gắng sử dụng jBone, đây là thư viện cho thao tác DOM trong các trình duyệt hiện đại, jBone phát triển đặc biệt cho Backbone, chỉ 2KB gzip và jQuery như API.

+0

thư viện rất tốt nếu bạn muốn sử dụng xương sống và để viết javascript bản địa cùng một lúc – francesca

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