5

Есть ли разветвленная/поддерживаемая версия магистрали, которая полностью исключает необходимость jquery или zepto для использования как маршрутизатора, так и видов?Удаление jquery/zepto зависимости от backbone.router и просмотров

Я бы не прочь использовать позвоночник, но нет никакой возможности, я бы заставлял зависимость jquery на моей странице просто использовать ее.

Если какое-либо решение не существует, может кто-то опубликовать суть того, что нужно точно изменить?

+0

Учитывая, что система обработки событий для просмотров основана на '$ .delegate' и друзьях, я думаю, что вам очень не повезло. –

+0

Действительно. :/[ограничение персонажа] – AntelopeSalad

ответ

9

Если вы хотите, чтобы Backbone обрабатывал DOM-манипуляцию, события DOM и запросы AJAX, вам понадобится другая библиотека для этого. Это не должно быть jQuery или Zepto - Backbone также поддерживает Ender, и теоретически вы можете использовать любую библиотеку, которая может выполнять выбор DOM и поддерживает подмножество методов стиля jQuery. Быстрый взгляд через annotated source code показывает, что вам нужны следующие методы:

  • $(selector)
  • $.ajax()
  • $(selector).find()
  • $(selector).bind()
  • $(selector).unbind()
  • $(selector).delegate()
  • $(selector).remove()
  • $(selector).attr()
  • $(selector).html()

Если вы не хотите, Backbone, чтобы иметь дело с этим материалом, вы можете очень легко удалить требования, переписав методы, которые используют их - например, вы можете отказаться от .attr() и .html(), установив Backbone.View.prototype.make = function() {}. Или просто не используйте Backbone.View - это устраняет необходимость во всем, кроме $.ajax() (если вы не используете pushState, и в этом случае вам понадобится привязка к событию).

+0

Хорошо спасибо, так что в принципе это не стоит усилий? Это кажется ужасным, что нужно делать вручную. - Редактирование: переход к этому прогонку в течение нескольких часов и пометка вас как правильная, если не будет дано никаких решений. – AntelopeSalad

+0

Ну, как я уже сказал, просто не используйте 'Backbone.View'. Тогда вам нужно реализовать '$ .ajax()'. Если вы не хотите использовать библиотеку DOM, вы все равно не получите большую ценность от «Backbone.View». – nrabinowitz

+1

Я не согласен с этим. Не слишком сумасшествие, чтобы думать о выборе элемента с помощью getElementById() вместо использования jquery или установки атрибута innerHTML чего-то и т. Д. – AntelopeSalad

0

Вы можете попробовать использовать jBone, это библиотека для манипуляций с DOM в современных браузерах, jBone разработана специально для Backbone, только 2kb gzipped и jQuery, таких как API.