SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Downloaden Sie, um offline zu lesen
Современный
фронтенд
за 30 минут
vladimir.malyk@gmail.com
JavaScript
Написан за 10 дней
В браузерах он и только он
Вместе уже 20 лет
Что думают о JavaScript ?
Что делают с JavaScript ?
Меньше перезагрузок,
больше ajax.
Меньше бекенда,
больше фронтенда.
Веб-странички теперь SPA.
Что хотят от JavaScript ?
Рынок хочет UX
как в нативных
приложениях.
Чем живёт современный
фронтенд?
смотри, тут новый
тренд на гитхабе
я форкнул ангуляр
это мой новый
полифил для fetch
c поддержкой IE6
Чем живёт современный
фронтенд?
Несколько экосистем.
Чем живёт современный
фронтенд?
Несколько экосистем.
Десятки фреймворков.
Чем живёт современный
фронтенд?
Несколько экосистем.
Десятки фреймворков.
Тысячи библиотек и утилит.
Чем живёт современный
фронтенд?
Несколько экосистем.
Десятки фреймворков.
Тысячи библиотек и утилит.
Ежегодные
революционные концепции.
Чем живёт современный
фронтенд?
Если выходит что-то новенькое, то:
v0.0.1 – пробуют
Чем живёт современный
фронтенд?
Если выходит что-то новенькое, то:
v0.0.1 – пробуют
v0.0.2 – советуют друзьям
Чем живёт современный
фронтенд?
Если выходит что-то новенькое, то:
v0.0.1 – пробуют
v0.0.2 – советуют
v0.0.3 – в продакшн
#1 на GitHub – JavaScript
Вершина айсберга
shim, polyfill, es5, es6, es7, traceur,
babel, requirejs, commonjs,
systemjs, browserify, webpack,
jspm, gulp, grunt, broccoli, bower,
npm, nodejs, expressjs, polymer,
angular, react, aurelia, immutable,
meteor, backbone, marionette,
ember, lodash, underscore, jquery,
d3, html5, css3, sass, less, vanillajs
VanillaJS + jQuery
<script src="jquery.min.js"></script>
<script src="myscripts.js"></script>
Ajax + DOM манипуляции
виджеты, анимации, плагины
jQuery => Backbone + Underscore
Шаблоны, Вьюшки,
Модели, Коллекции,
Хэш-роутинг,
Шины событий,
Манипуляции данными
Backbone => Marionette
MVC фреймворк поверх Backbone.
Вместо Underscore часто берут Lo-Dash.
Marionette => Marionette + Bower
Нужно следить за версиями
jQuery-*, backbone-* и bootstrap.
Bower – пакетный менеджер, который
закачает нужные библиотеки в корень
проекта и согласует их по версиям.
Bower – это область
внебраузерного JavaScript:
понадобится установка nodejs и npm.
Marionette + Bower + RequireJS
Нужно менеджить загрузку
библиотек в браузер.
VanillaJS не поддерживает модульность
исполняемого кода,
поэтому был создан RequireJS.
RequireJS – это js-утилита, которая
загружает фрагменты исполняемого
кода по требованию.
Marionette + Bower + RequireJS
Фрагменты исполняемого кода
изолируются через замыкания,
загружаются в рантайме,
асинхронно и по требованию.
Такие фрагменты должны
соответствовать AMD
(Asynchronous Module Definition).
Почти всё, что есть на bower.io,
можно подгружать как AMD.
Marionette + Bower + RequireJS + r.js
Ещё есть r.js.
Утилита, которая по RequireJS конфигу
собирает все фрагменты и модули
в один минифицированный
исполняемый файл.
Теперь весь код можно отправить
на девайс в один запрос.
Marionette + Bower + RequireJS + r.js
Это – Классика
есть и специфический фронтенд
JS Backend: node/io + npm + CommonJS
Серверный JavaScript
Исполняемый код
подключается синхронно
и выполняется на бекенде.
Как в java/python/ruby/php.
JS Backend: node/io + npm + CommonJS
Модули npm поставляются
в формате CommonJS,
предназначены для выполнения в NodeJs
JS Backend: node/io + npm + CommonJS
Модули npm поставляются
в формате CommonJS,
предназначены для выполнения в NodeJs
и несовместимы с AMD.
JS Backend: node/io + npm + CommonJS
Ребята захотели npm модули в браузере
и написали Browserify.
Marionette + npm + Browserify
В реализации отказываются от асинхронной
загрузки исполняемого кода.
Исходник выглядит чище и приятней.
Такой код нельзя запустить в браузере "как есть",
поэтому Browserify парсит исходники и
собирает их в пригодный для браузера файл.
Подход популярен, а в npm сегодня можно найти
почти всё то, что есть в bower.
Ведущие разработчики поставляют свой софт как
в виде AMD, так и в виде CommonJS модулей.
Marionette + npm + Browserify
Побочная плюшка – теперь ваш код сможет
отрендерить DOM как на бекенде внутри NodeJS,
так и в браузере.
Это назвали "Изоморфный Web" и слепили под
это специально заточенный фреймворк – Meteor.
Marionette + npm + Browserify + Grunt
Grunt – это таск ранер.
Утилита, которая автоматизирует
рутинные операции.
Например: следить за изменениями в исходниках,
автоматически собирать новый бандл
и перезагрузить страничку браузера.
Вместо Grunt сегодня отказываются в пользу
проворного Gulp.
А ещё есть Broccoli.
Marionette + bower + npm + Browserify + Gulp
Некоторые не около-js-ные вещи,
например css библиотеки, реже попадают
в традиционно “серверный” npm.
Поэтому часто пакеты тащат
одновременно и из bower и из npm.
Склеивают это всё через
написание правил Gulp.
Boilerplate: Marionette + bower + npm + Browserify + Gulp
У каждого уважающего себя
фронденд-разработчика свой коронный
набор утилит и способов их склейки.
Такой “коронный набор”
любят публиковать у себя на гитхабе
с приставкой "boilerplate".
Boilerplate: Marionette + bower + npm + Browserify + Gulp
Часто boilerplate заточены
под конкретные версии софта, поэтому они
стремительно плодятся
и стремительно устаревают.
Сотни их
Yeoman: Marionette + bower + npm + Browserify + Gulp
Апофеоз – заплить свой генератор для
http://yeoman.io/
Это специальный пакетный менеджер для
скафолдинга приложений.
Marionette + bower + npm + Gulp +
КоронныйНабор + AMD + CommonJS
+ Webpack!!11
Webpack написали чтобы упаковать любой
фронтенд зоопарк.
Позволяет упаковать в один бандл как AMD,
так и CommonJS, код с GitHub, стили, шаблоны,
графику и вашу собаку.
Написаны плагины для подгрузки и упаковки
CSS, LESS, SASS, Stylus, CoffeeScript, JSX, JSON
и всего на свете.
Всё это было модно полгода назад.
ES6 Harmony & ES6 Modules
ES6 был принят этим летом.
Но кому он нужен?
Все уже давно пишут на ES7.
В ES7 ещё больше плюшек.
Ожидается, что ES7 будет принят
в следующем 2016м году.
ES6/ES7
Ребята на JavaScript запилили себе
JavaScript-компилятор,
который компиллирует ES6/ES7
в VanillaJS ES5.
ES6/ES7
Но один компилятор – это мало.
Поэтому запилили сразу два:
Traceur и Babel.
Поддерживаемые фичи публикуют на
http://kangax.github.io/compat-table/es7/
ES6/ES7
Традиционно
ES6 Modules
несовместим
ни с AMD
ни с CommonJS
ES6/ES7 + SystemJS
SystemJS – универсальный загрузчик модулей
AMD/CommonJS/ES6 с синтаксисом ES6+.
Ваши ES6/7 исходники
загрузятся в браузер как есть
и скомпиллируются у пользователя на лету.
import $ from 'jquery'; // загрузит вам jQuery
import MainAppES6 from 'apps/mainAppES6'; // загрузит
ваш ES6+ файл и скомпиллирует его на лету
Потом можно собрать всё в один
предкомпиленный и минифицированный бандл.
ES6/ES7 + SystemJS + jspm
Jspm – это менеджер пакетов,
специально разработанный для
SystemJS
jspm умеет тащить зависимости
c github, npm и bower.
Весь зоопарк теперь аккуратно лежит в
jspm_packages.
JavaScript in 2015

Weitere ähnliche Inhalte

Was ist angesagt?

Frontendlab: Cравнить Несравнимое - Юлия Пучнина
Frontendlab: Cравнить Несравнимое  - Юлия ПучнинаFrontendlab: Cравнить Несравнимое  - Юлия Пучнина
Frontendlab: Cравнить Несравнимое - Юлия ПучнинаGeeksLab Odessa
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаendeveit
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаITCrowd Almaty
 
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)Ontico
 
Вредные советы для разработчиков
Вредные советы для разработчиковВредные советы для разработчиков
Вредные советы для разработчиковITCrowd Almaty
 
JavaScript завтра / Сергей Рубанов (Exante Limited)
JavaScript завтра / Сергей Рубанов  (Exante Limited)JavaScript завтра / Сергей Рубанов  (Exante Limited)
JavaScript завтра / Сергей Рубанов (Exante Limited)Ontico
 
Павел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузерыПавел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузерыUA Mobile
 
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...Ontico
 
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...Ontico
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
Сборка проектов с помощью ENB
Сборка проектов с помощью ENBСборка проектов с помощью ENB
Сборка проектов с помощью ENBAleksandr Boichenko
 
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил РеенкоJSib
 
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "IT Event
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...IT-Portfolio
 
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...Kirill Danilov
 
Javascript frameworks
Javascript frameworksJavascript frameworks
Javascript frameworkssigmaray
 
Kolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovKolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovdrupalconf
 
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ..."nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...MoscowJS
 
Current State of Server Side JavaScript
Current State of Server Side JavaScriptCurrent State of Server Side JavaScript
Current State of Server Side JavaScriptOleg Podsechin
 

Was ist angesagt? (20)

Frontendlab: Cравнить Несравнимое - Юлия Пучнина
Frontendlab: Cравнить Несравнимое  - Юлия ПучнинаFrontendlab: Cравнить Несравнимое  - Юлия Пучнина
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервиса
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
 
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
 
Вредные советы для разработчиков
Вредные советы для разработчиковВредные советы для разработчиков
Вредные советы для разработчиков
 
JavaScript завтра / Сергей Рубанов (Exante Limited)
JavaScript завтра / Сергей Рубанов  (Exante Limited)JavaScript завтра / Сергей Рубанов  (Exante Limited)
JavaScript завтра / Сергей Рубанов (Exante Limited)
 
Павел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузерыПавел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузеры
 
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
 
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Сборка проектов с помощью ENB
Сборка проектов с помощью ENBСборка проектов с помощью ENB
Сборка проектов с помощью ENB
 
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
 
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
 
Chef @DevWeb
Chef @DevWebChef @DevWeb
Chef @DevWeb
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
 
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
 
Javascript frameworks
Javascript frameworksJavascript frameworks
Javascript frameworks
 
Kolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovKolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosov
 
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ..."nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
 
Current State of Server Side JavaScript
Current State of Server Side JavaScriptCurrent State of Server Side JavaScript
Current State of Server Side JavaScript
 

Andere mochten auch

Flexbox - верстка без float'ов by Dmitry Radyno
Flexbox - верстка без float'ов by Dmitry RadynoFlexbox - верстка без float'ов by Dmitry Radyno
Flexbox - верстка без float'ов by Dmitry RadynoДмитрий Радыно
 
современный подход к Html верстке
современный подход к Html версткесовременный подход к Html верстке
современный подход к Html версткеТранслируем.бел
 
21 термин из HTML-верстки
21 термин из HTML-верстки21 термин из HTML-верстки
21 термин из HTML-версткиНетология
 
Как верстать сайты быстрее, чем их рисуют
Как верстать сайты быстрее, чем их рисуютКак верстать сайты быстрее, чем их рисуют
Как верстать сайты быстрее, чем их рисуютFDConf
 
Using Templates to Achieve Awesomer Architecture
Using Templates to Achieve Awesomer ArchitectureUsing Templates to Achieve Awesomer Architecture
Using Templates to Achieve Awesomer ArchitectureGarann Means
 
2015-11-07 01 Виталий Кравцов. Webpack: человеческий подход к разработке веб ...
2015-11-07 01 Виталий Кравцов. Webpack: человеческий подход к разработке веб ...2015-11-07 01 Виталий Кравцов. Webpack: человеческий подход к разработке веб ...
2015-11-07 01 Виталий Кравцов. Webpack: человеческий подход к разработке веб ...Омские ИТ-субботники
 
DotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + reactDotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + reactChen-Tien Tsai
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...JSib
 
Webpack - просто о сложном
Webpack -  просто о сложномWebpack -  просто о сложном
Webpack - просто о сложномTatiana Sakharova
 
"Flexbox — гибче мыслишь, больше спишь", Алексей Чернышев, MoscowJS 24
"Flexbox — гибче мыслишь, больше спишь", Алексей Чернышев, MoscowJS 24"Flexbox — гибче мыслишь, больше спишь", Алексей Чернышев, MoscowJS 24
"Flexbox — гибче мыслишь, больше спишь", Алексей Чернышев, MoscowJS 24MoscowJS
 
BabelJS - James Kyle at Modern Web UI
BabelJS - James Kyle at Modern Web UIBabelJS - James Kyle at Modern Web UI
BabelJS - James Kyle at Modern Web UImodernweb
 
Intro to Open Babel
Intro to Open BabelIntro to Open Babel
Intro to Open Babelbaoilleach
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй этоRoman Dvornov
 
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17MoscowJS
 
Webpack integration
Webpack integrationWebpack integration
Webpack integrationIllia Zub
 
Как Webpack сделал меня счастливее
Как Webpack сделал меня счастливееКак Webpack сделал меня счастливее
Как Webpack сделал меня счастливееYaroslav Serhieiev
 
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaWebpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaMarcin Gajda
 
Webpack Tutorial, Uppsala JS
Webpack Tutorial, Uppsala JSWebpack Tutorial, Uppsala JS
Webpack Tutorial, Uppsala JSEmil Öberg
 

Andere mochten auch (20)

Flexbox - верстка без float'ов by Dmitry Radyno
Flexbox - верстка без float'ов by Dmitry RadynoFlexbox - верстка без float'ов by Dmitry Radyno
Flexbox - верстка без float'ов by Dmitry Radyno
 
современный подход к Html верстке
современный подход к Html версткесовременный подход к Html верстке
современный подход к Html верстке
 
21 термин из HTML-верстки
21 термин из HTML-верстки21 термин из HTML-верстки
21 термин из HTML-верстки
 
Как верстать сайты быстрее, чем их рисуют
Как верстать сайты быстрее, чем их рисуютКак верстать сайты быстрее, чем их рисуют
Как верстать сайты быстрее, чем их рисуют
 
Using Templates to Achieve Awesomer Architecture
Using Templates to Achieve Awesomer ArchitectureUsing Templates to Achieve Awesomer Architecture
Using Templates to Achieve Awesomer Architecture
 
2015-11-07 01 Виталий Кравцов. Webpack: человеческий подход к разработке веб ...
2015-11-07 01 Виталий Кравцов. Webpack: человеческий подход к разработке веб ...2015-11-07 01 Виталий Кравцов. Webpack: человеческий подход к разработке веб ...
2015-11-07 01 Виталий Кравцов. Webpack: человеческий подход к разработке веб ...
 
DotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + reactDotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + react
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
Webpack - просто о сложном
Webpack -  просто о сложномWebpack -  просто о сложном
Webpack - просто о сложном
 
"Flexbox — гибче мыслишь, больше спишь", Алексей Чернышев, MoscowJS 24
"Flexbox — гибче мыслишь, больше спишь", Алексей Чернышев, MoscowJS 24"Flexbox — гибче мыслишь, больше спишь", Алексей Чернышев, MoscowJS 24
"Flexbox — гибче мыслишь, больше спишь", Алексей Чернышев, MoscowJS 24
 
BabelJS - James Kyle at Modern Web UI
BabelJS - James Kyle at Modern Web UIBabelJS - James Kyle at Modern Web UI
BabelJS - James Kyle at Modern Web UI
 
Intro to Open Babel
Intro to Open BabelIntro to Open Babel
Intro to Open Babel
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
 
Hey webpack
Hey webpackHey webpack
Hey webpack
 
Webpack integration
Webpack integrationWebpack integration
Webpack integration
 
Как Webpack сделал меня счастливее
Как Webpack сделал меня счастливееКак Webpack сделал меня счастливее
Как Webpack сделал меня счастливее
 
Webpack DevTalk
Webpack DevTalkWebpack DevTalk
Webpack DevTalk
 
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaWebpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
 
Webpack Tutorial, Uppsala JS
Webpack Tutorial, Uppsala JSWebpack Tutorial, Uppsala JS
Webpack Tutorial, Uppsala JS
 

Ähnlich wie Современный фронтенд за 30 минут.

Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиITCrowd Almaty
 
От пояса с инструментами к полноценной лаборатории
От пояса с инструментами к полноценной лабораторииОт пояса с инструментами к полноценной лаборатории
От пояса с инструментами к полноценной лабораторииYandex
 
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьДенис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьScrumTrek
 
JavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальностьJavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальностьDenis Izmaylov
 
Cовременный станок верстальщика
Cовременный станок верстальщикаCовременный станок верстальщика
Cовременный станок верстальщикаmcslayer
 
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Yandex
 
Web programming modern tendencies
Web programming modern tendenciesWeb programming modern tendencies
Web programming modern tendenciesDarkestMaster
 
браузеры презентация
браузеры презентациябраузеры презентация
браузеры презентация4ertenka
 
NPM и модульная архитектура приложения
NPM и модульная архитектура приложенияNPM и модульная архитектура приложения
NPM и модульная архитектура приложенияDenis Latushkin
 
браузеры презентация
браузеры презентациябраузеры презентация
браузеры презентация4ertenka
 
What do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScriptWhat do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScriptVasiliy Teliatnikov
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Anthony Marchenko
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими рукамиRoman Dvornov
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Alexey Kachayev
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakAmasty
 
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Ontico
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word pressvovasik
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)guest40e031
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Serversrit2010
 

Ähnlich wie Современный фронтенд за 30 минут. (20)

Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
 
От пояса с инструментами к полноценной лаборатории
От пояса с инструментами к полноценной лабораторииОт пояса с инструментами к полноценной лаборатории
От пояса с инструментами к полноценной лаборатории
 
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьДенис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
 
JavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальностьJavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальность
 
Cовременный станок верстальщика
Cовременный станок верстальщикаCовременный станок верстальщика
Cовременный станок верстальщика
 
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
 
Web programming modern tendencies
Web programming modern tendenciesWeb programming modern tendencies
Web programming modern tendencies
 
браузеры презентация
браузеры презентациябраузеры презентация
браузеры презентация
 
NPM и модульная архитектура приложения
NPM и модульная архитектура приложенияNPM и модульная архитектура приложения
NPM и модульная архитектура приложения
 
браузеры презентация
браузеры презентациябраузеры презентация
браузеры презентация
 
What do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScriptWhat do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScript
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими руками
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis Bosak
 
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
 
php frameworks
php frameworksphp frameworks
php frameworks
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 

Современный фронтенд за 30 минут.

  • 2. JavaScript Написан за 10 дней В браузерах он и только он Вместе уже 20 лет
  • 3. Что думают о JavaScript ?
  • 4. Что делают с JavaScript ? Меньше перезагрузок, больше ajax. Меньше бекенда, больше фронтенда. Веб-странички теперь SPA.
  • 5. Что хотят от JavaScript ? Рынок хочет UX как в нативных приложениях.
  • 8. я форкнул ангуляр это мой новый полифил для fetch c поддержкой IE6
  • 10. Чем живёт современный фронтенд? Несколько экосистем. Десятки фреймворков.
  • 11. Чем живёт современный фронтенд? Несколько экосистем. Десятки фреймворков. Тысячи библиотек и утилит.
  • 12. Чем живёт современный фронтенд? Несколько экосистем. Десятки фреймворков. Тысячи библиотек и утилит. Ежегодные революционные концепции.
  • 13. Чем живёт современный фронтенд? Если выходит что-то новенькое, то: v0.0.1 – пробуют
  • 14. Чем живёт современный фронтенд? Если выходит что-то новенькое, то: v0.0.1 – пробуют v0.0.2 – советуют друзьям
  • 15. Чем живёт современный фронтенд? Если выходит что-то новенькое, то: v0.0.1 – пробуют v0.0.2 – советуют v0.0.3 – в продакшн
  • 16. #1 на GitHub – JavaScript
  • 17. Вершина айсберга shim, polyfill, es5, es6, es7, traceur, babel, requirejs, commonjs, systemjs, browserify, webpack, jspm, gulp, grunt, broccoli, bower, npm, nodejs, expressjs, polymer, angular, react, aurelia, immutable, meteor, backbone, marionette, ember, lodash, underscore, jquery, d3, html5, css3, sass, less, vanillajs
  • 18.
  • 19. VanillaJS + jQuery <script src="jquery.min.js"></script> <script src="myscripts.js"></script> Ajax + DOM манипуляции виджеты, анимации, плагины
  • 20. jQuery => Backbone + Underscore Шаблоны, Вьюшки, Модели, Коллекции, Хэш-роутинг, Шины событий, Манипуляции данными
  • 21. Backbone => Marionette MVC фреймворк поверх Backbone. Вместо Underscore часто берут Lo-Dash.
  • 22. Marionette => Marionette + Bower Нужно следить за версиями jQuery-*, backbone-* и bootstrap. Bower – пакетный менеджер, который закачает нужные библиотеки в корень проекта и согласует их по версиям. Bower – это область внебраузерного JavaScript: понадобится установка nodejs и npm.
  • 23. Marionette + Bower + RequireJS Нужно менеджить загрузку библиотек в браузер. VanillaJS не поддерживает модульность исполняемого кода, поэтому был создан RequireJS. RequireJS – это js-утилита, которая загружает фрагменты исполняемого кода по требованию.
  • 24. Marionette + Bower + RequireJS Фрагменты исполняемого кода изолируются через замыкания, загружаются в рантайме, асинхронно и по требованию. Такие фрагменты должны соответствовать AMD (Asynchronous Module Definition). Почти всё, что есть на bower.io, можно подгружать как AMD.
  • 25. Marionette + Bower + RequireJS + r.js Ещё есть r.js. Утилита, которая по RequireJS конфигу собирает все фрагменты и модули в один минифицированный исполняемый файл. Теперь весь код можно отправить на девайс в один запрос.
  • 26. Marionette + Bower + RequireJS + r.js Это – Классика
  • 28. JS Backend: node/io + npm + CommonJS Серверный JavaScript Исполняемый код подключается синхронно и выполняется на бекенде. Как в java/python/ruby/php.
  • 29. JS Backend: node/io + npm + CommonJS Модули npm поставляются в формате CommonJS, предназначены для выполнения в NodeJs
  • 30. JS Backend: node/io + npm + CommonJS Модули npm поставляются в формате CommonJS, предназначены для выполнения в NodeJs и несовместимы с AMD.
  • 31. JS Backend: node/io + npm + CommonJS Ребята захотели npm модули в браузере и написали Browserify.
  • 32. Marionette + npm + Browserify В реализации отказываются от асинхронной загрузки исполняемого кода. Исходник выглядит чище и приятней. Такой код нельзя запустить в браузере "как есть", поэтому Browserify парсит исходники и собирает их в пригодный для браузера файл. Подход популярен, а в npm сегодня можно найти почти всё то, что есть в bower. Ведущие разработчики поставляют свой софт как в виде AMD, так и в виде CommonJS модулей.
  • 33. Marionette + npm + Browserify Побочная плюшка – теперь ваш код сможет отрендерить DOM как на бекенде внутри NodeJS, так и в браузере. Это назвали "Изоморфный Web" и слепили под это специально заточенный фреймворк – Meteor.
  • 34. Marionette + npm + Browserify + Grunt Grunt – это таск ранер. Утилита, которая автоматизирует рутинные операции. Например: следить за изменениями в исходниках, автоматически собирать новый бандл и перезагрузить страничку браузера. Вместо Grunt сегодня отказываются в пользу проворного Gulp. А ещё есть Broccoli.
  • 35. Marionette + bower + npm + Browserify + Gulp Некоторые не около-js-ные вещи, например css библиотеки, реже попадают в традиционно “серверный” npm. Поэтому часто пакеты тащат одновременно и из bower и из npm. Склеивают это всё через написание правил Gulp.
  • 36. Boilerplate: Marionette + bower + npm + Browserify + Gulp У каждого уважающего себя фронденд-разработчика свой коронный набор утилит и способов их склейки. Такой “коронный набор” любят публиковать у себя на гитхабе с приставкой "boilerplate".
  • 37. Boilerplate: Marionette + bower + npm + Browserify + Gulp Часто boilerplate заточены под конкретные версии софта, поэтому они стремительно плодятся и стремительно устаревают. Сотни их
  • 38. Yeoman: Marionette + bower + npm + Browserify + Gulp Апофеоз – заплить свой генератор для http://yeoman.io/ Это специальный пакетный менеджер для скафолдинга приложений.
  • 39. Marionette + bower + npm + Gulp + КоронныйНабор + AMD + CommonJS + Webpack!!11 Webpack написали чтобы упаковать любой фронтенд зоопарк. Позволяет упаковать в один бандл как AMD, так и CommonJS, код с GitHub, стили, шаблоны, графику и вашу собаку. Написаны плагины для подгрузки и упаковки CSS, LESS, SASS, Stylus, CoffeeScript, JSX, JSON и всего на свете.
  • 40. Всё это было модно полгода назад.
  • 41.
  • 42. ES6 Harmony & ES6 Modules ES6 был принят этим летом. Но кому он нужен? Все уже давно пишут на ES7. В ES7 ещё больше плюшек. Ожидается, что ES7 будет принят в следующем 2016м году.
  • 43. ES6/ES7 Ребята на JavaScript запилили себе JavaScript-компилятор, который компиллирует ES6/ES7 в VanillaJS ES5.
  • 44. ES6/ES7 Но один компилятор – это мало. Поэтому запилили сразу два: Traceur и Babel. Поддерживаемые фичи публикуют на http://kangax.github.io/compat-table/es7/
  • 46. ES6/ES7 + SystemJS SystemJS – универсальный загрузчик модулей AMD/CommonJS/ES6 с синтаксисом ES6+. Ваши ES6/7 исходники загрузятся в браузер как есть и скомпиллируются у пользователя на лету. import $ from 'jquery'; // загрузит вам jQuery import MainAppES6 from 'apps/mainAppES6'; // загрузит ваш ES6+ файл и скомпиллирует его на лету Потом можно собрать всё в один предкомпиленный и минифицированный бандл.
  • 47. ES6/ES7 + SystemJS + jspm Jspm – это менеджер пакетов, специально разработанный для SystemJS jspm умеет тащить зависимости c github, npm и bower. Весь зоопарк теперь аккуратно лежит в jspm_packages.