Почему jQuery зависит от Ember.js?

Я могу понять, что нужно использовать некоторый уровень абстракции для общих операций, таких как извлечение элементов DOM, манипуляция атрибутами и т.д., но jQuery - довольно массивная библиотека, которая кажется слишком много излишней для Ember.

После просмотра исходного кода в Ember используется примерно около 30 применений jQuery, и похоже, что большинство использования jQuery - это простые селекторные вызовы, некоторые события и некоторый обход DOM.

Ember. $(rootElement).off('. ember', '**'). removeClass ('ember-application');

...

elem = this. $();

...

это $() appendTo (цель);..

...

Ember. $(window).on('hashchange.ember-location -' + guid, function() {

и др.

Есть ли другие причины, по которым Ember требует jQuery для каждого приложения?

Могут ли эти несколько применений быть внедрены в Ember и jQuery удалены как зависимость?

Ответ 1

Только уровень просмотра Ember зависит от jQuery. Он использовался в большей степени исторически, чем сейчас. В будущем мы могли бы предложить, включив функциональность в Ember, хотя мы не хотим поддерживать совместимость между браузерами в Ember, о которой уже заботится jQuery. Другой путь с jQuery 2.0 был бы способом создания триммера, созданного jQuery, содержащего только те части, которые использует Ember.

Если нет компромиссных способов заменить экземпляры использования jQuery в ядре Ember, вы должны предложить изменения в качестве проблем в GitHub.

Ответ 2

Вопрос был очень хорошо объяснен Томом Дейлом (Ember Core Developer).

По существу он говорит:

Ember.js требует jQuery по двум причинам:

  • Мы очень полагаемся на это в интеграции Ember/Handlebars для вставки и изменения элементов DOM. Я лично не заинтересован в обработке кросс-браузерных ошибок манипулирования DOM, но jQuery команда превосходит его.
  • Имея стандартную библиотеку манипуляций с DOM в jQuery, разработчики могут перемещаться между различными приложениями Ember.js и полагаться на то, что у них есть бит-протестированная кросс-платформенная библиотека под ними.

Если вас беспокоит размер, я бы рекомендовал исследовать новый jQuery 2.0, который имеет возможность выполнять пользовательские сборки без функций таких как анимация.

Имеет много смысла для меня.

Update:

Недавно Эрик Брин (разработчик Ember Core) написал очень интересную comment о структуре и упомянул о состоянии искусства использования jQuery в проектах Ember.

Вставка комментария:

Это распространенное заблуждение, что Ember.js является монолитным. Я могу заверить вы на самом деле не верны. Вы можете выбрать и выбрать части Ember, который вам нужен или нужен (например, маршрутизатор полностью необязательный). Наши инструменты сборки поддерживают подбор и выбор пакеты, которые вы хотите. Вы можете использовать его сегодня без jQuery (вам понадобится для прокладки и наличия библиотеки делегирования событий, или еще проще использовать супер-облегченная настраиваемая сборка jQuery).