Каковы лучшие стратегии для использования нескольких библиотек AJAX? - PullRequest
6 голосов
/ 13 сентября 2008

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

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

Ответы [ 7 ]

9 голосов
/ 15 сентября 2008

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

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

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

4 голосов
/ 15 сентября 2008

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

3 голосов
/ 15 сентября 2008

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

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

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

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

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

2 голосов
/ 13 сентября 2008

Я тоже сторонник jQuery, так что извините за недостаток знаний о других, но ...

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

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

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

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

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

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

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

1 голос
/ 10 октября 2008

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

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

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

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

Prototype имеет действительно хорошую поддержку 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) как и другие сообщества (Прототип был таким). Это может быть результатом того, что их основные разработчики живут за пределами США, и, следовательно, не могут посещать столько конференций и участвовать в жизни более широкого сообщества. Я бы не позволил этому полностью вас отпугнуть, но об этом нужно помнить.

1 голос
/ 13 сентября 2008

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

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

0 голосов
/ 13 сентября 2008

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

...