Почему 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).