Эффективный AJAX
  Александр Шуркаев
  alshur@ya.ru
  htmlcoder.visions.ru, www.prototypejs.ru

  Май 2007
Зачем нужен AJAX?
• Эффектность
• Эффективность
• Модность ;-)




                    2
Экскурс в историю JavaScript’а
•   Mocha / LiveScript
•   Netscape Navigator 2.0
•   JScript
•   ECMA-262 (ECMAScript)
•   JavaScript 1.6, JavaScript 1.7 и т. д.




                                             3
Особенности JavaScript’а
• !Java
• Нестрогое приведение типов,
  автоматическое приведение
• Автоматическая сборка мусора
• Замыкания и анонимные функции
• Функции – объекты первого уровня
• Концепция прототипов
• Обработка исключений

                                     4
XMLHttpRequest (XHR)
• XML, да не только
• Придумал Microsoft, реализован сейчас
  во всех ведущих браузерах
• Custom-заголовки
• Синхронно и асинхронно
• POST и GET (принципы REST)
• POST’ить файлы через XHR нельзя



                                          5
Форматы передачи данных

               XHR




 XML    JSON         (X)HTML   Текст



                                       6
XML
<result>             •   DOM / Template
 <foo>foobar</foo>   •   XSLT / XPath
 <bar>23</bar>
</result>




                                          7
JSON
{                    •   eval(), но аккуратно
    “foo”: foobar,
    “bar”: 23
}




                                                8
(X)HTML = AHAH
<p>Foo</p>   •   innerHTML
<p>Bar</p>




                             9
Текст
Ваше сообщение        •   innerHTML
успешно отправлено!
                      •   alert()




                                      10
Оптимизация JS
Graceful degradation   Progressive
                       enhancement




                                     11
Утечка памяти
• $(‘foobar’).foo = bar();
• CollectGarbage();




                             12
Безопасность
• XSRF
• XSS




               13
IDE
•   DreamWeaver
•   Eclipse
•   Aptana
•   Visual Studio
•   Блокнот и т. п.




                      14
Отладка
• alert()
• window.onerror
• Firebug! Firebug! Firebug!




                               15
Prototype.js
•   Библиотека, облегчающая жизнь
•   $, $$, $A, $F, $H, $R, Try.these()
•   Array, String, Number
•   AJAX (Ajax.Request, Ajax.Updater и т. Д.)
•   DOM
•   Template
•   Class.create(), Object.extend(), options,
    etc.
                                            16

Эффективный AJAX

Editor's Notes

  • #10 AHAH = Asychronous HTML and HTTP