Removing the jquery/zepto dependency on backbone.router and views
backbone.js, client-side, javascript, jquery, web-applications
Solution
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).
Problem
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?