16
Эффективный AJAX Александр Шуркаев [email protected] htmlcoder.visions.ru , www.prototypejs.ru Май 2007

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

Embed Size (px)

DESCRIPTION

Презентация для какого-то семинара в 2007 году

Citation preview

Page 1: Эффективный AJAX

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

Александр Шуркаев[email protected], www.prototypejs.ru

Май 2007

Page 2: Эффективный AJAX

2

Зачем нужен AJAX?

• Эффектность• Эффективность• Модность ;-)

Page 3: Эффективный AJAX

3

Экскурс в историю JavaScript’а

• Mocha / LiveScript• Netscape Navigator 2.0• JScript• ECMA-262 (ECMAScript)• JavaScript 1.6, JavaScript 1.7 и т. д.

Page 4: Эффективный AJAX

4

Особенности JavaScript’а

• !Java• Нестрогое приведение типов,

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

Page 5: Эффективный AJAX

5

XMLHttpRequest (XHR)

• XML, да не только• Придумал Microsoft, реализован сейчас

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

Page 6: Эффективный AJAX

6

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

XHR

XML JSON (X)HTML Текст

Page 7: Эффективный AJAX

7

XML

<result> <foo>foobar</foo> <bar>23</bar></result>

• DOM / Template• XSLT / XPath

Page 8: Эффективный AJAX

8

JSON

{ “foo”: foobar, “bar”: 23}

• eval(), но аккуратно

Page 9: Эффективный AJAX

9

(X)HTML = AHAH

<p>Foo</p><p>Bar</p>

• innerHTML

Page 10: Эффективный AJAX

10

Текст

Ваше сообщение успешно отправлено!

• innerHTML• alert()

Page 11: Эффективный AJAX

11

Оптимизация JS

Graceful degradation Progressive

enhancement

Page 12: Эффективный AJAX

12

Утечка памяти

• $(‘foobar’).foo = bar();

• CollectGarbage();

Page 13: Эффективный AJAX

13

Безопасность

• XSRF

• XSS

Page 14: Эффективный AJAX

14

IDE

• DreamWeaver

• Eclipse

• Aptana

• Visual Studio

• Блокнот и т. п.

Page 15: Эффективный AJAX

15

Отладка

• alert()

• window.onerror

• Firebug! Firebug! Firebug!

Page 16: Эффективный AJAX

16

Prototype.js

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

etc.