SlideShare a Scribd company logo
Загрузка и инициализация
JavaScript приложения
Михаил Давыдов
@azproduction
JavaScript и Node.js разработчик

Dump-IT, Екатеринбург, 25 мая 2012
Мобильный веб
2
40      %



    Не весь код используется
3
Браузерный кэш

4
Тестовый прототип, 7 Кб/с




        http://tinyurl.com/loader-test
5
Последовательная загрузка и
    исполнение

<script src="main.js">
</script>
<script src="module.js">
</script>



6
9 Запросов


    131.5 Кб


    18 с

               DOM 17.5 c
7
Параллельная загрузка и
    исполнение

<script src="main.js" async>
</script>
<script src="module.js" async>
</script>



8
9 Запросов


    131.5 Кб


    18 с

       DOM 1.5 c
9
Параллельная загрузка,
 последовательный запуск

 $LAB
     .script('main.js')
     .wait()
     .script('module.js');

                     http://labjs.com/
10
10 Запросов           ↑1


     136.9 Кб             ↑5.4


     18.2 с               ↑0.2

              DOM 3.7 c
11
Собираем и пакуем


 $ cat **/*.js > main.js
 $ java -jar yuicompressor.jar 
 main.js -o main.min.js



     http://tinyurl.com/yui-compressor
12
6 Запросов     ↓3

     48 Кб        ↓83.5


     9.5 с        ↓8.5

     DOM 9.1 c
13
AppCache — оффлайн
 хранилище




14
AppCache Манифест
 <html manifest="example.appcache">
 </html>


 CACHE MANIFEST
 # v1 - 2011-08-13
 http://example.com/index.html
 http://example.com/main.js

15
Преимущества AppCache
1. Надежное кэширование
2. Работа оффлайн
3. Простое управление версиями
4. Своевременное обновление


      http://tinyurl.com/mdn-appcache
16
Кэш — 0 запросов, 0 Кб
17
Выборочная загрузка


     AMD — Асинхронная
     декларация модулей


              http://requirejs.org/
18
Преимущества АMD
1. Грузим основные части
2. Остальное по необходимости
3. Автодогрузка зависимостей
4. ...
5. PROFIT


19
8 Запросов           +2    ↑2


     31.5    +30     Кб    ↓16.5


     7.4 с    +4 c             ↓2.1

             DOM 5.1 c
20
Ленивая загрузка и
 инициализация

         LMD — Ленивая
       декларация модулей


     https://github.com/azproduction/lmd
21
Преимущества LMD
1. Ленивая инициализация
2. Node.js-подобные модули
3. Встроенный сборщик и упаковщик
4. Гибкий объем библиотеки
5. Горячая сборка проекта


22
6 Запросов         +2     ↓2

     18      +30   Кб        ↓13.5


     5.1 с    +4 c           ↓2.3

              DOM 5.1 c
23
6 Запросов            9    ↓3

     18            131.5 Кб    ↓113


     5.1 с               18 с ↓12.9

             DOM 5.1 c
24
1. Используйте AppCache           +
http://tinyurl.com/mdn-appcache
http://tinyurl.com/confessjs

2. Соберите скрипты
3. LMD или AMD


25
1. Используйте AppCache
2. Соберите скрипты        +
http://tinyurl.com/yui-compressor

3. LMD или AMD



26
1. Используйте AppCache
2. Соберите скрипты       +
3. LMD или AMD

https://github.com/azproduction/lmd
http://requirejs.org/



27
OVER 9000

              JS


     Achievement unlocked!
28
Вопросы?

Тест http://tinyurl.com/loader-test

 LMD       https://github.com/azproduction/lmd
 Confess   http://tinyurl.com/confessjs
 Require   http://requirejs.org/
 YUIC      http://tinyurl.com/yui-compressor
 CanIUse   http://caniuse.com/


29
Михаил Давыдов
     JavaScript и Node.js разработчик

     azproduction@yandex-team.ru

     Twitter @azproduction

     Habr http://azproduction.habrahabr.ru

     GitHub https://github.com/azproduction



30

More Related Content

PDF
Конструктор / Денис Паясь (Яндекс)
PDF
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
PDF
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
PDF
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
PPTX
Знакомство с WebAssembly
PDF
non-blocking java script
PPTX
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
PDF
#5 "React.js" Антон Артамонов
Конструктор / Денис Паясь (Яндекс)
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
Знакомство с WebAssembly
non-blocking java script
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
#5 "React.js" Антон Артамонов

What's hot (20)

PDF
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
PDF
Разработка API для большого, нагруженного сервиса
PDF
Современный фронтенд -- как не утонуть в море хайпа?
PDF
Инфраструктура распределенных приложений на Node.js
PDF
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
PPTX
Vagrant puppet
PDF
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
PPT
Node.js (RichClient)
PPTX
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
PPTX
Maven 3 : уличная магия
PPT
Maven как средство сборки проекта
PPTX
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
PDF
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
PDF
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
PDF
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
PPTX
Cистемы автоматической сборки проектов (Полина Фоминых)
PDF
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
PDF
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
PPT
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
PDF
Алексей Фомкин, Практическое применение Web Workers
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Разработка API для большого, нагруженного сервиса
Современный фронтенд -- как не утонуть в море хайпа?
Инфраструктура распределенных приложений на Node.js
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Vagrant puppet
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
Node.js (RichClient)
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
Maven 3 : уличная магия
Maven как средство сборки проекта
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
Cистемы автоматической сборки проектов (Полина Фоминых)
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Алексей Фомкин, Практическое применение Web Workers
Ad

Viewers also liked (11)

PDF
JavaScript. Basics (in russian)
PDF
JavaScript. Loops and functions (in russian)
PDF
JavaScript. Event Loop and Timers (in russian)
PDF
Ajax and Transports (in russian)
PDF
JavaScript. OOP (in russian)
PDF
Dart - светлая сторона силы?
PDF
Components now! (in russian)
PDF
Introduction in Node.js (in russian)
PDF
JavaScript. Event Model (in russian)
PDF
JavaScript. Async (in Russian)
PDF
Components now!
JavaScript. Basics (in russian)
JavaScript. Loops and functions (in russian)
JavaScript. Event Loop and Timers (in russian)
Ajax and Transports (in russian)
JavaScript. OOP (in russian)
Dart - светлая сторона силы?
Components now! (in russian)
Introduction in Node.js (in russian)
JavaScript. Event Model (in russian)
JavaScript. Async (in Russian)
Components now!
Ad

Similar to Dump-IT Загрузка и инициализация JavaScript (17)

PDF
Михаил Давыдов "Масштабируемые JavaScript-приложения"
PDF
Марина Степанова "Как мы заставили API Яндекс.Карт работать быстрее"
PPTX
Node.js введение в технологию, КПИ #ITmeetingKPI
PDF
Modules and assembling of JavaScript (in russian)
PDF
Асинхронная модульность в API Яндекс.Карт — Александр Зинчук
PDF
RequireJS і Magento 2
PDF
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
PDF
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
PPTX
What do you MEAN? или введение в Fullstack JavaScript
PPTX
Быстрая и безболезненная разработка клиентской части веб-приложений
PDF
Node.js Меньше сложности, больше надежности Holy.js 2021
PPTX
Windows Azure and node js
PPT
ВВЕДЕНИЕ В NODE.JS
PDF
Frontend: Путешествие в мир модульных загрузчиков
PPT
Client optimization drupal
PDF
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
PDF
Оптимизация JavaScript в Drupal
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Марина Степанова "Как мы заставили API Яндекс.Карт работать быстрее"
Node.js введение в технологию, КПИ #ITmeetingKPI
Modules and assembling of JavaScript (in russian)
Асинхронная модульность в API Яндекс.Карт — Александр Зинчук
RequireJS і Magento 2
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
What do you MEAN? или введение в Fullstack JavaScript
Быстрая и безболезненная разработка клиентской части веб-приложений
Node.js Меньше сложности, больше надежности Holy.js 2021
Windows Azure and node js
ВВЕДЕНИЕ В NODE.JS
Frontend: Путешествие в мир модульных загрузчиков
Client optimization drupal
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
Оптимизация JavaScript в Drupal

Dump-IT Загрузка и инициализация JavaScript