Каковы наилучшие стратегии использования нескольких библиотек AJAX?

StackOverflow https://stackoverflow.com/questions/60360

Вопрос

Каким опытом использования нескольких библиотек AJAX вы можете поделиться?

Есть полезные функции в Prototype, некоторые в jQuery, библиотеке Yahoo и т. д.Можно ли включить все библиотеки и использовать из каждой то, что вы хотите, все ли они обычно хорошо сочетаются с пространствами имен и т. д.Существует ли практическое ограничение на размер/количество включаемых библиотек ради скорости или оно незначительно?Есть ли пары, которые особенно хорошо работают вместе (например,Прототип/сценарий) или пары, которых нет?

Это было полезно?

Решение

Вы могли бы использовать все эти библиотеки, но я настоятельно не рекомендую этого делать.Загрузка и выполнение такого большого количества JavaScript, скорее всего, задушит браузер и замедлит работу вашего пользователя.С точки зрения пользователя и разработчика было бы намного лучше выбрать один.Меньше переключения контекста/архитектуры и меньше кода для поддержки.

Как уже говорилось в других ответах, большинство из них не конфликтуют.

См. Yahoo! Исключительная производительность сайт для получения дополнительной информации.

Другие советы

Вы могли бы использовать API библиотек Google AJAX.Он обеспечивает общую сеть распространения и архитектуру загрузки для jQuery, прототипа, script.aculo.us, MooTools и dojo.

YUI имеет довольно строгое пространство имен, поэтому не должен конфликтовать с другими библиотеками.

Как уже упоминалось, вы можете запускать jQuery в бесконфликтном режиме.

Опытный образец делает есть некоторые проблемы с хорошим взаимодействием с другими библиотеками, отчасти потому, что они (или раньше) изменяют основные объекты, такие как Array. Протосейф попытки решить эти проблемы.

Script.aculo.us — это просто библиотека виджетов, которая находится поверх Prototype, поэтому эти два компонента, очевидно, должны хорошо работать вместе.

Все это означает, что вы мог используйте YUI, jQuery, Prototype и Script.aculo.us в своем приложении, но вы можете обнаружить, что использование одной библиотеки значительно упрощает поддержку.

Я тоже сторонник jQuery, поэтому прошу прощения за незнание остальных, но...

Что делает jQuery таким замечательным, так это бесконфликтный режим, поэтому, например, вы должны сделать:

$('#foobar').whatever();

В бесконфликтном режиме вы должны сделать следующее:

var jq = jQuery.noConflict();
jq('#foobar').whatever();

На одну вещь меньше, о чем стоит беспокоиться.Я предполагаю, что прототип предлагает аналогичную функцию, и Yahoo тоже.

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

Все трое должны быть дееспособными.Выберите тот, который вам больше всего нравится, и расширьте его.:)

Прямо сейчас я использую jQuery и версию набора инструментов Microsof ajax, предназначенную только для файлов javascript, бок о бок в проекте.

Я думаю, что я собираюсь использовать jQuery и в конечном итоге удалю версию Microsoft.Я новичок в jQuery, но чем больше я о нем узнаю, тем больше я в него влюбляюсь.

Лучшая стратегия – это не использовать несколько библиотек.Соблазнительно использовать больше библиотек для решения проблемы, но это неэффективно, подвержено ошибкам и затрудняет поддержку вашего кода другими.

В большинстве случаев вы сможете избежать использования нескольких библиотек, понимая вашу проблемную область и то, какая библиотека поможет вам лучше всего ее решить.Для всех этих библиотек также существует множество плагинов и расширений.

Например, JQuery прямо из коробки поддерживает междоменные вызовы JSONP и имеет хорошую библиотеку виджетов в JQueryUI, а Prototype — нет.

$.getJSON('http://anothersite.com/mashup.json?callback=?', function(data) { });

Prototype имеет действительно хорошую поддержку объектно-ориентированного подхода, и с ним легко перемещаться по DOM, но ему не хватает некоторых междоменных функций, необходимых для создания виджетов и коллажей.

var Foo =  Class.create({  
  initialize: function(name) {
    this.name = name;
  }   
});

var Bar = Class.create(Foo, {
  initialize: function($super, name)  {
     $super(name);
   }
});

Mootools имеет отличные эффекты, хорошую поддержку объектно-ориентированного программирования, действительно надежные виджеты и междоменные запросы, но (и это может быть только мое впечатление), сообщество разработчиков не так активно сотрудничает и общается с глобальным сообществом (за исключением mootools), как другие сообщества (раньше в прототипе было именно так).Это может быть результатом того, что их основные разработчики живут за пределами США и, следовательно, не могут посещать столько конференций и участвовать в жизни более широкого сообщества.Я бы не позволил этому полностью вас отпугнуть, но об этом следует помнить.

Ruby on Rails по умолчанию использует и прототип, и Scriptaculous, поскольку между ними мало общего.В дополнение к этому я также использовал фрагменты Yui, и у меня никогда не возникало проблем.Время загрузки является проблемой, но библиотеки обычно кэшируются, поэтому загружается только первая страница.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top