2012-04-20 50 views
19

據骨幹JS網站:Backbone.js對jQuery有很強的依賴性嗎?

骨幹唯一的硬依賴是Underscore.js(> 1.3.1)。對於RESTful持久性,歷史支持通過Backbone.Router和DOM操作與Backbone.View,包括json2.js和jQuery(1.4.2)或Zepto。

我用下面的代碼測試過,刪除jQuery和Backbone視圖會引發錯誤。

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

Backbone.View和Backbone.Router如何在沒有jQuery的情況下工作?

回答

24

儘管Backbone.View取決於a DOM操作庫,也就是說,您不能使用未組織到某種庫中的vanilla JavaScript,您可以配置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; 
}; 

調用此方法將允許你使用任何你想要的庫。

例如:

Backbone.setDomLibrary(myCustomLibrary); 
7

您可以使用沒有jQuery的Backbone.Model,但Backbone.View將需要jQuery或Zepto,就像docs狀態一樣。

+1

也'Backbone.Router'依賴於jQuery的/的Zepto ...不使用視圖和路由器是足夠低的 – drinchev 2012-04-20 07:35:35

+0

機會。依靠jquery/zepto會更好的證明它的合理性。 – TonyTakeshi 2012-04-22 08:38:08

6

嘗試使用jBone,這是庫在現代瀏覽器的DOM操作,jBone開發的專用骨幹,只有2KB gzip壓縮和jQuery類似API。

+0

非常好的庫,如果你想使用骨幹網,並在同一時間寫本地JavaScript – francesca 2015-09-14 16:35:51