2008-09-13 2 views
6

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

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

ответ

9

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

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

См. Сайт Yahoo! 'Exceptional Performance для получения дополнительной информации.

1

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

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

2

Я верующий JQuery, так что простите за отсутствие знаний о других, но ...

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

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

При отсутствии конфликта режиме, вы могли бы сделать это:

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

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

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

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

+0

Прототип AFAIK не имеет такой функции. jQuery namespaces все внутри объекта jQuery, а Prototype имеет свои функции, разбросанные по десяткам пользовательских и встроенных классов, поэтому было бы очень сложно это сделать. – 2009-03-23 12:50:35

+0

Что касается Yahoo, если я правильно помню, он скрывает все в пространстве имен, называемом «yahoo» или что-то в этом роде, поэтому он по-настоящему не конфликтует ни с чем. – 2009-03-23 12:51:18

0

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

3

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

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

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

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

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

4

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

1

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

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

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

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

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

Смежные вопросы