Backbone.js是否对jQuery有很强的依赖性?

Ton*_*shi 21 backbone.js

根据骨干js网站:

Backbone唯一的硬依赖是Underscore.js(> 1.3.1).对于RESTful持久性,通过Backbone.Router的历史支持和使用Backbone.View的DOM操作,包括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>
Run Code Online (Sandbox Code Playgroud)

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

Jef*_*y K 25

虽然Backbone.View不依赖于一个 DOM操作库,即你不能使用未在某种库组织的香草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;
};
Run Code Online (Sandbox Code Playgroud)

调用此方法将允许您使用所需的任何库.

例如:

Backbone.setDomLibrary(myCustomLibrary);
Run Code Online (Sandbox Code Playgroud)


Jim*_*dra 7

您可以使用Backbone.Model不带jQuery,但Backbone.View需要jQuery或Zepto,就像文档状态一样.


kup*_*nko 7

尝试使用jBone,这是现代浏览器中DOM操作的库,jBone专为Backbone开发,只有2kb gzip和jQuery就像API.