21

根据骨干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>

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

4

4 回答 4

25

虽然 Backbone.View 确实依赖于DOM操作库,即您不能使用未组织到某种库中的 vanilla javascript,但您可以将 Backbone 配置为使用您喜欢的任何库。

请参阅 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);
于 2012-04-20T13:22:38.180 回答
7

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

于 2012-04-20T07:26:31.473 回答
7

尝试使用jBone,这是现代浏览器中用于 DOM 操作的库,jBone 专门为 Backbone 开发,只有 2kb gzipped 和类似 jQuery 的 API。

于 2013-11-13T10:21:25.327 回答
3

Backbone 现在更容易与 jQuery 分离。
看一下这个:

在没有 jQuery 的情况下使用 Backbone

于 2014-06-12T22:27:07.460 回答