Modules and assembling of JavaScript (in russian)

Mikhail Davydov
Mikhail DavydovJavaScript & Node.js Developer at Yandex
Modules and assembling of JavaScript (in russian)
Михаил Давыдов
JavaScript разработчик
Модули и
сборка
JavaScript
Моя история.
С чего я начинал и
к чему пришел…
cat **/*.js > build.js!
5
Файлы и cat **/*.js > build.js
• Это быстро и просто
• Что плохого
–  Собирается все без разбора
–  Возможны конфликты имен переменных
–  Результат плохо сжимается
–  Нужно учитывать порядок
Так жить нельзя!
– Нужны модули.
7
Мне понадобились модули. Зачем?
• Разделение логических частей
• Управление импортом/экспортом
• Явные зависимости и их контроль
• Меньше конфликтов переменных
Модуль? – нет, не слышал!
Learning JavaScript
Design Patterns
http://clck.ru/8aLgX
include('main.js');!
10
(function ($) {
var myStuff = {};
window.stuff = myStuff;
})(jQuery);
IIFE и include()
11
include('common.js');
include('ru.js');
include('main.js');
IIFE и include(): Сборка
includify main.js > build.js
12
IIFE и include()
• Что хорошего
–  Модули в замыканиях
–  Можно наследовать сборки
• Что плохого
–  RegExp
–  Дублирование модулей
Я встретил её…
REQUIRE JS
15
RequireJS
• AMD
• Асинхронные зависимости
• Плагины
• Оптимизация – r.js
• Большое комьюнити
16
define(['jQuery', 'lodash'],
function ($, _) {
var myStuff = {};
return myStuff;
});
RequireJS & AMD: Модули
17
<script
data-main="js/app"
src="js/require.js">
</script>
RequireJS & AMD: Сборка
node r.js -o build.js
I REQUIRE JS
Я думал, что это навсегда…
19
define(function () {
var myStuff = {};
return myStuff;
});
Много церемоний с define()
1. Нужно писать обертку
20
define("dojo/_base/html", [
"./kernel",
"../dom",
"../dom-style",
"../dom-attr",
"../dom-prop",
"../dom-class",
"../dom-construct",
"../dom-geometry"
], function (dojo, dom, style, attr, prop, cls, ctr, geom) {
});
Много церемоний с define()
2. Куча зависимостей – ад
http://clck.ru/4b7ew
Modules and assembling of JavaScript (in russian)
22
define(function () {
var myStuff = {};
return myStuff;
});
Много церемоний с define()
3. Артефакты: Приходится табулировать
23
require('module'); // js?
require('async!data', cb); // ?
require(ComicSans); // font?
require() - God Object?
1. Возвращает что угодно, как угодно
2. Не сразу понятен результат
AMD и CJS
25
И еще AMD
• Приходится поддерживать AMD
–  jQuery, underscore, backbone, …
–  2 версии с AMD и без
• Пытаются заразить Node.js
–  node-requirejs
–  в node и так есть модульная система
http://clck.ru/4b7dE
Сейчас мы друзья
Другие пути
28
Другие пути
•  browserify
–  CommonJS – хорошо
–  слишком много от Node.js – плохо
•  просто загрузчик
–  headjs
–  yepnopejs
29
Из моего опыта
•  Сегодня все собирается. Даже dev
•  Читаемость кода очень важна
–  Нужно исключить неявные конструкции
•  Сборок бывает много
–  dev, production, dev-ru, test-en_US
•  Нужен контроль результата сборки
–  Проверка целостности
–  Подробная информация о сборке
Я создал новый
инструмент
LMD – Lazy Module Declaration
LMD
Модули – CommonJS
Остальное делает сборщик
33
var $ = require('$'),
myStuff = {};
module.exports = myStuff;
Модули – CommonJS/Modules 1.0*
http://clck.ru/4b7gO
34
Профит
•  Ненавязчивый формат
–  Нет лишней писанины
–  Единообразие вида модулей
•  Обратная совместимость с Node.js
–  Без плагинов, регистрации и SMS
•  Оберткой модулей занимается сборщик
35
{
"root": "../js",
"output": "../index.js",
"modules": {
"main": "main.js",
"i18n": "locale/ru.json"
},
"css": true,
"ie": false,
"worker": true
}
Конфиг сборки
http://clck.ru/4b7gq
Проблема: Много конфигов
37
{
"extends": "index.json",
"output": "../index-en.js"
"modules": {
"i18n": "locale/en.json"
}
}
Операции над конфигами
1. Наследование конфигов
http://clck.ru/4b7j2
38
{
"modules": {
"i18n": "locale/en.json"
}
}
Операции над конфигами
2. Миксины конфигов
lmd index+en 
–output=index-en.js
http://clck.ru/4b7pI
39
{
"root": "../js",
"modules": {
"main": "main.js"
},
"depends": "*.lmd.json"
}
Операции над конфигами
3. Зависимости модулей
main.lmd.json хранит зависимости main.js
http://clck.ru/4b7sw
40
Профит
•  Минус – нужно писать конфиг
•  JSON можно легко реиспользовать
•  Количество конфигов сократилось
•  Меньше писать сборочных скриптов
•  Легче понять результат сборки
Явные плагины
Гибкие плагины
Очень гибкие плагины
44
{
"image": true,
"promise": true,
"cache": true,
"stats": true
}
Явный способ подключения плагинов
http://clck.ru/4b7t6
Сборщик проверит плагины
45
// javascript
require('module');
// css
require.css('path/to.css', callback);
// image+promise
require.image('path/img.png')
.then(callback);
LMD require – не God Object
http://clck.ru/4b7tO
46
Профит
•  require() делает одну работу
•  Результат require() стал предсказуемым
•  Код стало проще воспринимать
______ __ __ !
/ ___ /  /  !
  ____   ____    !
 _____  _____  _ !
/_____/ /_____/ /_/ !
!
http://clck.ru/4dU-0!
$ lmd -c cfg.json ✘!
-o result.js ✘!
!
$ lmd make cfg ✔!
$ lmd make cfg+ru ✔!
$ lmd info cfg ✔!
$ lmd ✔!atch !fg!⇥ ⇥! c!w!
LMD GUI
Встроенная аналитика
http://clck.ru/4b8My
Интеграция с Grunt.js
https://npmjs.org/package/grunt-lmd
52
Профит LMD
•  Максимум автоматизации
–  Сборщик LMD
–  Аналитика
•  Максимум явного кода
–  require.*()
•  Минимум писанины
–  CommonJS
–  CLI & GUI
•  Минимум копипаста
–  Операции над кофигами
https://github.com/azproduction/lmd
Михаил Давыдов
JavaScript разработчик
i@azproduction.ru
azproduction
Спасибо
Lazy Module Declaration
http://lmdjs.org
1 of 54

Recommended

«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов by
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов2ГИС Технологии
2.4K views50 slides
Knockoutjs на примере 2ГИС-Онлайн by
Knockoutjs на примере 2ГИС-ОнлайнKnockoutjs на примере 2ГИС-Онлайн
Knockoutjs на примере 2ГИС-Онлайн2ГИС Технологии
1.4K views80 slides
Инструменты разные нужны, инструменты разные важны by
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныCodeFest
781 views55 slides
Svyatoslav Login "360 View of XSS" by
Svyatoslav Login "360 View of XSS"Svyatoslav Login "360 View of XSS"
Svyatoslav Login "360 View of XSS"Fwdays
98 views51 slides
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС by
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИСTARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС2ГИС Технологии
477 views64 slides
Суперсилы Chrome developer tools by
Суперсилы Chrome developer toolsСуперсилы Chrome developer tools
Суперсилы Chrome developer tools2ГИС Технологии
2.7K views100 slides

More Related Content

What's hot

СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2 by
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2GoQA
147 views49 slides
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014 by
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014Dmytro Zharii
7.7K views45 slides
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus) by
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)Ontico
558 views48 slides
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy by
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyЧитабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyDmytro Zharii
3.1K views39 slides
МРТ для данных, Frontend Conf 2016 by
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016Anastasia Goryacheva
554 views93 slides
DOM-шаблонизаторы – не только "быстро" by
DOM-шаблонизаторы – не только "быстро"DOM-шаблонизаторы – не только "быстро"
DOM-шаблонизаторы – не только "быстро"Roman Dvornov
3.7K views100 slides

What's hot(20)

СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2 by GoQA
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
GoQA147 views
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014 by Dmytro Zharii
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014
Dmytro Zharii7.7K views
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus) by Ontico
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
Ontico558 views
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy by Dmytro Zharii
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyЧитабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Dmytro Zharii3.1K views
DOM-шаблонизаторы – не только "быстро" by Roman Dvornov
DOM-шаблонизаторы – не только "быстро"DOM-шаблонизаторы – не только "быстро"
DOM-шаблонизаторы – не только "быстро"
Roman Dvornov3.7K views
Михаил Давыдов "Масштабируемые JavaScript-приложения" by Yandex
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Yandex2.7K views
Опыт разработки эффективного SPA by Eugene Abrosimov
Опыт разработки эффективного SPAОпыт разработки эффективного SPA
Опыт разработки эффективного SPA
Eugene Abrosimov3.9K views
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended) by Roman Dvornov
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Roman Dvornov1.7K views
Basis.js – «под капотом» by Roman Dvornov
Basis.js – «под капотом»Basis.js – «под капотом»
Basis.js – «под капотом»
Roman Dvornov2.6K views
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru) by Ontico
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Ontico3.1K views
Компонентный подход: скучно, неинтересно, бесперспективно by Roman Dvornov
Компонентный подход: скучно, неинтересно, бесперспективноКомпонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективно
Roman Dvornov5K views
Тесты в стиле BDD на C# (Подходы и инструменты; SpecFlow, BDDfy) by Dmytro Zharii
Тесты в стиле BDD на C# (Подходы и инструменты; SpecFlow, BDDfy)Тесты в стиле BDD на C# (Подходы и инструменты; SpecFlow, BDDfy)
Тесты в стиле BDD на C# (Подходы и инструменты; SpecFlow, BDDfy)
Dmytro Zharii7.2K views
М. Боднарчук Современное функциональное тестирование с Codeception by Albina Tiupa
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с Codeception
Albina Tiupa783 views
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС) by Ontico
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Ontico2.5K views
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft) by Ontico
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
Ontico751 views
Архитектура кода нового 2ГИС Web API или куда мы дели MVC by DevDay
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
DevDay1.1K views
Быстро о быстром by Roman Dvornov
Быстро о быстромБыстро о быстром
Быстро о быстром
Roman Dvornov5.9K views
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript by Alexey Ivanov
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
Alexey Ivanov1.3K views

Similar to Modules and assembling of JavaScript (in russian)

RequireJS і Magento 2 by
RequireJS і Magento 2RequireJS і Magento 2
RequireJS і Magento 2Elogic Magento Development
895 views27 slides
Михаил Давыдов "Масштабируемые JavaScript-приложения" by
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Yandex
852 views45 slides
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико... by
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...Сбертех | SberTech
1.1K views36 slides
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один by
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON
198 views82 slides
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один by
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только одинSECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только одинSECON
343 views82 slides
UWDC 2013, Как мы используем Yii by
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiAlexander Makarov
4.4K views39 slides

Similar to Modules and assembling of JavaScript (in russian)(20)

Михаил Давыдов "Масштабируемые JavaScript-приложения" by Yandex
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Yandex852 views
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико... by Сбертех | SberTech
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один by SECON
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON198 views
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один by SECON
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только одинSECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON343 views
UWDC 2013, Как мы используем Yii by Alexander Makarov
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем Yii
Alexander Makarov4.4K views
Юрий Василевский «Автоматизация в XCode» by Yandex
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
Yandex5.2K views
Юрий Василевский "Автоматизация в XCode" by Yandex
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
Yandex698 views
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб... by Yandex
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
Yandex1.1K views
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17 by MoscowJS
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
MoscowJS4.3K views
Frontend: Путешествие в мир модульных загрузчиков by CodeFest
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
CodeFest957 views
JavaScript-модули "из прошлого в будущее" by oelifantiev
JavaScript-модули "из прошлого в будущее"JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"
oelifantiev1.7K views
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group) by Ontico
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Ontico625 views
Современная разработка сайтов на CMF Drupal. by phpdevby
Современная разработка сайтов на CMF Drupal.Современная разработка сайтов на CMF Drupal.
Современная разработка сайтов на CMF Drupal.
phpdevby1.9K views
Javascript-фреймворки:
 должен остаться только один by Sergey Xek
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
Sergey Xek1.7K views
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis) by Ontico
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Ontico1.4K views
Расширяемая платформа для создания и управления автоматизированными тестами н... by jazzteam
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
jazzteam1.9K views

More from Mikhail Davydov

Components now! (in russian) by
Components now! (in russian)Components now! (in russian)
Components now! (in russian)Mikhail Davydov
851 views63 slides
JavaScript. Event Model (in russian) by
JavaScript. Event Model (in russian)JavaScript. Event Model (in russian)
JavaScript. Event Model (in russian)Mikhail Davydov
789 views77 slides
Code Style (in russian) by
Code Style (in russian)Code Style (in russian)
Code Style (in russian)Mikhail Davydov
561 views82 slides
Ajax and Transports (in russian) by
Ajax and Transports (in russian)Ajax and Transports (in russian)
Ajax and Transports (in russian)Mikhail Davydov
570 views31 slides
Introduction in Node.js (in russian) by
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Mikhail Davydov
1.5K views56 slides
JavaScript. Loops and functions (in russian) by
JavaScript. Loops and functions (in russian)JavaScript. Loops and functions (in russian)
JavaScript. Loops and functions (in russian)Mikhail Davydov
680 views59 slides

More from Mikhail Davydov(16)

JavaScript. Event Model (in russian) by Mikhail Davydov
JavaScript. Event Model (in russian)JavaScript. Event Model (in russian)
JavaScript. Event Model (in russian)
Mikhail Davydov789 views
Ajax and Transports (in russian) by Mikhail Davydov
Ajax and Transports (in russian)Ajax and Transports (in russian)
Ajax and Transports (in russian)
Mikhail Davydov570 views
Introduction in Node.js (in russian) by Mikhail Davydov
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)
Mikhail Davydov1.5K views
JavaScript. Loops and functions (in russian) by Mikhail Davydov
JavaScript. Loops and functions (in russian)JavaScript. Loops and functions (in russian)
JavaScript. Loops and functions (in russian)
Mikhail Davydov680 views
JavaScript. Event Loop and Timers (in russian) by Mikhail Davydov
JavaScript. Event Loop and Timers (in russian)JavaScript. Event Loop and Timers (in russian)
JavaScript. Event Loop and Timers (in russian)
Mikhail Davydov1.5K views
JavaScript. Introduction (in russian) by Mikhail Davydov
JavaScript. Introduction (in russian)JavaScript. Introduction (in russian)
JavaScript. Introduction (in russian)
Mikhail Davydov499 views
JavaScript on frontend and backend (in Russian by Mikhail Davydov
JavaScript on frontend and backend (in RussianJavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in Russian
Mikhail Davydov764 views
Dump-IT Загрузка и инициализация JavaScript by Mikhail Davydov
Dump-IT Загрузка и инициализация JavaScriptDump-IT Загрузка и инициализация JavaScript
Dump-IT Загрузка и инициализация JavaScript
Mikhail Davydov730 views
Dart - светлая сторона силы? by Mikhail Davydov
Dart - светлая сторона силы?Dart - светлая сторона силы?
Dart - светлая сторона силы?
Mikhail Davydov599 views
Making Scalable JavaScript Application by Mikhail Davydov
Making Scalable JavaScript ApplicationMaking Scalable JavaScript Application
Making Scalable JavaScript Application
Mikhail Davydov1.3K views

Modules and assembling of JavaScript (in russian)