#jquery #ajax #yui #prototypejs #scriptaculous
Вопрос:
Каким опытом вы можете поделиться в использовании нескольких библиотек AJAX?
В Prototype есть полезные функции, некоторые из них есть в jQuery, библиотеке Yahoo и т. Д. Можно ли включить все библиотеки и использовать то, что вы хотите от каждой, все ли они, как правило, хорошо сочетаются с пробелами имен и т. Д. В целях ускорения существует ли практическое ограничение на размер/количество библиотек, которые необходимо включить, или это незначительно? Существуют ли пары, которые особенно хорошо работают вместе (например, Прототип/сценарий), или пары, которые этого не делают?
Ответ №1:
Вы могли бы использовать все эти библиотеки, но я настоятельно не рекомендую этого делать. Загрузка и выполнение такого количества JavaScript, скорее всего, задушит браузер и замедлит работу вашего пользователя. С точки зрения пользователя и разработчика было бы намного лучше выбрать один. Меньше переключения контекста/архитектуры и меньше кода для обслуживания.
Как уже говорилось в других ответах, большинство из них не конфликтуют.
Дополнительную информацию смотрите на сайте Yahoo! с исключительной производительностью.
Ответ №2:
Вы можете использовать API библиотек Google AJAX. Он обеспечивает общую распределительную сеть и архитектуру загрузки для jQuery, прототипа, script.aculo.us, MooTools и додзе
Ответ №3:
YUI имеет довольно сильное пространство имен, поэтому не должен конфликтовать с другими библиотеками.
Как уже упоминалось, вы можете запускать jQuery в режиме без конфликтов.
У прототипа действительно есть некоторые проблемы с другими библиотеками, отчасти потому, что он (или он раньше) изменяет основные объекты, такие как Array
. Protosafe пытается решить эти проблемы.
Script.aculo.us это просто библиотека виджетов, которая находится поверх прототипа, так что эти два, очевидно, должны хорошо сочетаться.
Все это означает, что вы можете использовать YUI, jQuery, Prototype amp; Script.aculo.us в вашем приложении, но вы можете обнаружить, что использование одной библиотеки значительно упрощает обслуживание.
Ответ №4:
Я тоже сторонник jQuery, так что извините меня за незнание других, но …
Что делает jQuery таким замечательным, так это режим отсутствия конфликтов, поэтому, например, вы бы сделали:
$('#foobar').whatever();
В режиме без конфликтов вы бы сделали это:
var jq = jQuery.noConflict();
jq('#foobar').whatever();
Одной вещью, о которой стоит беспокоиться, меньше. Я бы предположил, что prototype предлагает аналогичную функцию, а также Yahoo.
Но в любом случае, я бы не хотел слишком сильно пропагандировать jQuery и злить людей, но какую бы библиотеку вы ни выбрали, я думаю, что все они могут сделать почти все, что вам нужно. Особенно подумайте о преимуществах того, что вам не придется изучать три разные библиотеки.
Все трое должны быть способными. Выберите тот, который вам больше всего нравится, и расширьте его. 🙂
Комментарии:
1. Прототип AFAIK не имеет такой функции. Пространства имен jQuery занимают все внутри объекта «jQuery», а функции Prototype разбросаны по десяткам пользовательских и встроенных классов, поэтому это было бы очень сложно сделать.
2. Что касается Yahoo, если я правильно помню, он скрывает все внутри пространства имен под названием «yahoo» или что-то в этом роде, поэтому по умолчанию он ни с чем не конфликтует.
Ответ №5:
Я использую jQuery и версию только для файлов javascript набора инструментов Microsoft ajax бок о бок в проекте прямо сейчас.
Я думаю, что я пойду с jQuery и в конечном итоге удалю Microsoft. Я очень новичок в jQuery, но чем больше я узнаю об этом, тем больше влюбляюсь.
Ответ №6:
Лучшая стратегия-не использовать несколько библиотек. Заманчиво захотеть добавить больше библиотек для решения проблемы, но это неэффективно, подвержено ошибкам и затрудняет поддержку вашего кода другими.
В большинстве случаев вы сможете избежать использования нескольких библиотек, поняв свою проблемную область и то, какая библиотека поможет вам лучше всего ее решить. Существует также множество плагинов и расширений для всех этих библиотек.
Например, jQuery поддерживает междоменные вызовы JSONP прямо из коробки и имеет хорошую библиотеку виджетов в jQueryUI, прототип-нет.
$.getJSON('http://anothersite.com/mashup.json?callback=?', function(data) { });
Прототип имеет действительно хорошую поддержку OO, и его легко обойти по DOM, но ему не хватает некоторых междоменных функций, необходимых для создания виджетов и мэшапов.
var Foo = Class.create({
initialize: function(name) {
this.name = name;
}
});
var Bar = Class.create(Foo, {
initialize: function($super, name) {
$super(name);
}
});
У Mootools отличные эффекты, хорошая поддержка OO, действительно надежные виджеты и междоменные запросы, но (и это может быть просто мое впечатление) сообщество разработчиков не так тесно сотрудничает и общается с глобальным сообществом (за пределами mootools), как другие сообщества (Прототип был таким). Это может быть результатом того, что их основные разработчики живут за пределами США и, следовательно, не могут посещать столько конференций и участвовать в большом сообществе. Я бы не позволил этому полностью отпугнуть вас, хотя, но это то, что нужно иметь в виду.
Ответ №7:
Ruby on Rails по умолчанию использует как прототип, так и сценарий, так как между ними мало совпадений. В дополнение к этому я также использовал фрагменты yui, и у меня никогда не было проблем. Время загрузки является проблемой, но библиотеки обычно кэшируются, поэтому они загружаются только на первой странице.
Комментарии:
1. Scriptaculous-это ДОПОЛНЕНИЕ к прототипу. Вот почему они хорошо работают вместе.