问题
Is there a forked/maintained version of backbone that completely eliminates the need for jquery or zepto to use both the router and views?
I wouldn't mind using backbone but there's no way in heck I'd force a jquery dependency on my page just to use it.
If a solution doesn't exist can someone post a gist of what needs to be changed exactly?
回答1:
If you want Backbone to handle DOM manipulation, DOM events, and AJAX requests, then you'll need another library to do this. It doesn't have to be jQuery or Zepto - Backbone also supports Ender, and you could theoretically use any library that can do DOM selection and supports a subset of jQuery-style methods. A quick look through the annotated source code shows that you need the following methods:
$(selector)
$.ajax()
$(selector).find()
$(selector).bind()
$(selector).unbind()
$(selector).delegate()
$(selector).remove()
$(selector).attr()
$(selector).html()
If you don't want Backbone to deal with this stuff, you can pretty easily remove the requirements by overwriting the methods that use them - e.g. you can dispense with .attr()
and .html()
by setting Backbone.View.prototype.make = function() {}
. Or just don't use Backbone.View
- that removes the need for everything but $.ajax()
(unless you're using pushState
, in which case you need event binding too).
回答2:
Yup here's one: https://github.com/inkling/backbone.native. It's a tiny adapter that allows Backbone to work while relying on only native DOM APIs.
回答3:
You can try to use jBone, this is library for DOM manipulations in modern browsers, jBone developed special for Backbone, only 2kb gzipped and jQuery like API.
来源:https://stackoverflow.com/questions/10014263/removing-the-jquery-zepto-dependency-on-backbone-router-and-views