Video https://www.youtube.com/watch?v=ra5J9R2WH5I
Загрузка и инициализацияJavaScript приложенияМихаил Давыдов@azproductionJavaScript и Node.js разработчикDump-IT, Екатеринбург, 25 мая 2012
View Slide
2Мобильный веб
3Не весь код используется40%
4Браузерный кэш
5Тестовый прототип, 7 Кб/сhttp://tinyurl.com/loader-test
<br/><br/>6Последовательная загрузка иисполнение
79 Запросов131.5 Кб18 сDOM 17.5 c
<br/><br/>8Параллельная загрузка иисполнение
99 Запросов131.5 Кб18 сDOM 1.5 c
$LAB.script('main.js').wait().script('module.js');10Параллельная загрузка,последовательный запускhttp://labjs.com/
1110 Запросов136.9 Кб18.2 сDOM 3.7 c↑0.2↑5.4↑1
$ cat **/*.js > main.js$ java -jar yuicompressor.jar \main.js -o main.min.js12Собираем и пакуемhttp://tinyurl.com/yui-compressor
136 Запросов48 Кб9.5 сDOM 9.1 c↓8.5↓83.5↓3
14AppCache — оффлайнхранилище
CACHE MANIFEST# v1 - 2011-08-13http://example.com/index.htmlhttp://example.com/main.js15AppCache Манифест
16Преимущества AppCache1. Надежное кэширование2. Работа оффлайн3. Простое управление версиями4. Своевременное обновлениеhttp://tinyurl.com/mdn-appcache
17Кэш — 0 запросов, 0 Кб
AMD — Асинхроннаядекларация модулей18Выборочная загрузкаhttp://requirejs.org/
19Преимущества АMD1. Грузим основные части2. Остальное по необходимости3. Автодогрузка зависимостей4. ...5. PROFIT
208 Запросов31.57.4 сDOM 5.1 c+2+30 Кб+4 c ↓2.1↓16.5↑2
LMD — Лениваядекларация модулей21Ленивая загрузка иинициализацияhttps://github.com/azproduction/lmd
22Преимущества LMD1. Ленивая инициализация2. Node.js-подобные модули3. Встроенный сборщик и упаковщик4. Гибкий объем библиотеки5. Горячая сборка проекта
236 Запросов185.1 сDOM 5.1 c+2+30 Кб+4 c ↓2.3↓13.5↓2
9131.5 Кб18 с246 Запросов185.1 сDOM 5.1 c↓12.9↓113↓3
251. Используйте AppCachehttp://tinyurl.com/mdn-appcachehttp://tinyurl.com/confessjs2. Соберите скрипты3. LMD или AMD+
26+1. Используйте AppCache2. Соберите скриптыhttp://tinyurl.com/yui-compressor3. LMD или AMD
27+1. Используйте AppCache2. Соберите скрипты3. LMD или AMDhttps://github.com/azproduction/lmdhttp://requirejs.org/
28OVER 9000Achievement unlocked!JS
29Вопросы?LMDConfessRequireYUICCanIUsehttps://github.com/azproduction/lmdhttp://tinyurl.com/confessjshttp://requirejs.org/http://tinyurl.com/yui-compressorhttp://caniuse.com/Тест http://tinyurl.com/loader-test
Михаил ДавыдовJavaScript и Node.js разработчик[email protected]Twitter @azproductionHabr http://azproduction.habrahabr.ruGitHub https://github.com/azproduction30