Загрузка и инициализация JavaScript приложенияМихаил Давыдов @azproduction
JavaScript и Node.js разработчик
Dump-IT, Екатеринбург, 25 мая 2012
<script src="main.js">
</script>
<script src="module.js">
</script>
6
Последовательная загрузка и исполнение
<script src="main.js" async>
</script>
<script src="module.js" async>
</script>
8
Параллельная загрузка и исполнение
$LAB
.script('main.js')
.wait()
.script('module.js');
10
Параллельная загрузка, последовательный запуск
http://labjs.com/
$ cat **/*.js > main.js
$ java -jar yuicompressor.jar \
main.js -o main.min.js
12
Собираем и пакуем
http://tinyurl.com/yui-compressor
<html manifest="example.appcache">
</html>
CACHE MANIFEST
# v1 - 2011-08-13
http://example.com/index.html
http://example.com/main.js
15
AppCache Манифест
16
Преимущества AppCache
1. Надежное кэширование
2. Работа оффлайн
3. Простое управление версиями
4. Своевременное обновление
http://tinyurl.com/mdn-appcache
AMD — Асинхронная декларация модулей
18
Выборочная загрузка
http://requirejs.org/
19
Преимущества АMD
1. Грузим основные части
2. Остальное по необходимости
3. Автодогрузка зависимостей
4. ...
5. PROFIT
LMD — Ленивая декларация модулей
21
Ленивая загрузка и инициализация
https://github.com/azproduction/lmd
22
Преимущества LMD
1. Ленивая инициализация
2. Node.js-подобные модули
3. Встроенный сборщик и упаковщик
4. Гибкий объем библиотеки
5. Горячая сборка проекта
25
1. Используйте AppCache
http://tinyurl.com/mdn-appcachehttp://tinyurl.com/confessjs
2. Соберите скрипты3. LMD или AMD
+
26
+1. Используйте AppCache2. Соберите скрипты
http://tinyurl.com/yui-compressor
3. LMD или AMD
27
+1. Используйте AppCache2. Соберите скрипты3. LMD или AMD
https://github.com/azproduction/lmdhttp://requirejs.org/
29
Вопросы?
LMDConfessRequireYUICCanIUse
https://github.com/azproduction/lmdhttp://tinyurl.com/confessjshttp://requirejs.org/http://tinyurl.com/yui-compressorhttp://caniuse.com/
Тест http://tinyurl.com/loader-test
Михаил ДавыдовJavaScript и Node.js разработчик
Twitter @azproduction
Habr http://azproduction.habrahabr.ru
GitHub https://github.com/azproduction
30