SlideShare ist ein Scribd-Unternehmen logo
1 von 75
Downloaden Sie, um offline zu lesen
Бэкенд, фронтенд —
всё смешалось.
Экскурсия в будущее веб-разработки.
Мой стэк для SPA.
@nodkz
Pavel Chertorogov
ES next and Babel
Webpack and Tools
Isomorphic JavaScript
NodeJS and React
Relay, GraphQL
My history
SPA and ServiceWorker
My history
My history
2001
2004
Сайт с анекдотами в
школьном интранете.
Веб-сайт nod.h1.ru с
ответами на реферальные
регистрации.
HTML 2000 

- hover на кнопках
- анимированные GIF
- under construction и powered by,
- выпадающее меню вверх
мастерства,
- marquee
2004.04
Дата запуска Gmail
Первое на моей памяти SPA
wap.mobi.kz 2004.08
mobi.kz 2005.06
2005.02
AJAX
2006.09
jQuery
2006
2008
Автоматизация верстки
журнала и газет
Колёса, Крыша
31 апреля 2006
1 версии (www, wap)
2008.06

AppStore
2009.05
NodeJS
2008.09
V8
My history2010-11

Responsive
2010
март 2010
2 версии сайтов

отвязанные от газет
2011.08

Bootstrap
2010.10

Backbone
2011.12

Meteor
2010

Angular 1
2011.09

Ember 1
2011
июнь 2011
новый сайт
зарождение биллинга 2013
RoR, SEO, сборщики, tons of JS
My history
2015 Sep
2 версия сайта

и слияние с DNR.kz
2014.08
ServiceWorker
2015.08
Ember 22014-2016 and not ready yet
Angular 2 RC
2013.03
React
Aйрат Жаншуаков
показал CodeKit
Dan Abramov
показал Hot Reload
Sebastian Markbage
влюбил принципами разработки React
2015 July
2015 Apr
SPA and ServiceWorker
SPA and ServiceWorker
Hello,
Jake Archibald!
2014.08
работа в условиях потери связи
управление кэшем ресурсов
управление сетевыми HTTPS запросами
До свидания, AppCaсhe
https://developer.mozilla.org/ru/docs/Web/API/Service_Worker_API/Using_Service_Workers
https://github.com/NekR/offline-plugin for webpack by Arthur Stolyar
66.8% in KZ
59% in Global
caniuse.com
ServiceWorker это —
SPA and ServiceWorker
Бум Mobile Apps проходит,
приходит бум Single Page Applications.
уже доступно SEO, если есть server side rendering
не надо ничего устанавливать на телефон
удешевление разработки (одна команда, вместо трех)
Скорость и функционал немного не дотягивают до Mobile Apps
Service Worker Cookbook: https://serviceworke.rs/
НО
Мобильные приложения не вымрут, но шальных непонимающих
заказчиков станет меньше.
ES next и Babel
ES next и Babel
ES6 (ES2015, harmony)
ES7 (ES2016)
любые будущие proposals or possibilities
ES next —
get `ES next` and transform to `ES current`Babel —
ES current — ES5 (ECMAScript 5)
TC39 — комитет (люди которые решают, как улучшать язык)
свои плагины в обход TC39
ES6 можно считать в`ES current` для
SF10, CH52, FF49, Edge 14, Node 6
http://kangax.github.io/compat-table/es6/
ES next и Babel
transform syntax
babel-preset-es2015 babel-polyfill
new globals and object extensions
ES next и Babel
Arrow Functions in ES6
ES next и Babel
Default Parameters in ES6
ES next и Babel
Destructuring Assignment in ES6
ES next и Babel
Template Literals in ES6
ES next и Babel
Enhanced Object Literals in ES6
ES next и Babel
Classes in ES6
ES next и Babel
До свидания, CoffeeScript
Так получается, что c ES next я могу больше чем с CoffeeScript.
Для меня сахар ES6 уже вполне сопоставим с CoffeeScript.
Async/await для меня важнее, чем отсутсвие скобочек в CoffeeScript.
Import/export, уже не могу без ES6 модульности.
В модулях я использую flowtype для проверки типов.
И меня смущает, что до сих пор мало кто из больших компаний им пользуется.
Webpack
Webpack
Webpack — ключевое слово module bundler
Webpack
Webpack может подключить любые файлы как модули
В конфиге указываются лоадеры к расширениям файлов.
Лоадеры обрабатывают их по вашим правилам. 

При этом в JS код возвращается мета-информация.
используете CSSModules со стилями? 

тогда в stylesMap будет записан хэш
{ [имя класса из scss]: название
после сборки }
картинки получают уникальные
названия для кеширования?

тогда в imagePath будет записан
новый уникальный uri до файла
а ещё lazy loading, chunks, vendors и tree shaking
Webpack
The streaming
build system
Task Runner
основан
на конфигурации
end 2011
основан
на потоках
mid 2013
http://sixrevisions.com/web-development/grunt-vs-gulp/
May 11, 2015
Grunt Gulp
Webpack
https://www.youtube.com/playlist?list=PLDyvV36pndZHfBThhg4Z0822EEG9VGenn
Скринкаст от Ильи Кантора по Webpack 1:
Rollup.js — the next-generation JavaScript module bundler.
Tutorials
Competitors
Official docs
http://webpack.github.io/docs
http://rollupjs.org
Browserify lets you require('modules') in the browser by bundling up
all of your dependencies.
http://browserify.org/
Webpack
До свидания, Grunt, Gulp — вы не для SPA
Awesome tools
Awesome tools
До свидания, WebStorm, Sublime
Atom — a hackable text editor for the 21st Century
Awesome tools
Atom не Atom, без этих плагинов:
Nuclide от Facebook
Дополнительно устанавливает много полезных пакетов.
Поддерживает автокомплит, jump-to-definition, flowtype.
Раз в неделю обновляется.
LiveStyle для CSS, LESS и SCSS (Sergey Chikuyonok)
Один большой минус, не нашел плагина с GUI для git’а, который
был настолько же крут, как у WebStorm (IntelliJ IDEA).
Atom поддерживает flowtype из коробки.
Awesome tools
ESLint
Mocha+chai
Create ram disk on MacOS:
diskutil erasevolume hfsx my_ram_disk `hdiutil attach -nomount ram://1000000`;
проверяет типы, наличие методов, очень глубоко сканирует код.
Ловит баги до запуска JS кода. Интегрирован в Nuclide (Atom).
Работает моментально, код компилировать не нужно.
Обалденная вещь, если вы пишите библиотеку!
проверяет ваш JS код на соответствие style-guide,
находит простые ошибки по коду.
Рекомендую eslint-config-airbnb
Невероятно полезная вещь!
для написания BDD тестов
C Jest у меня что-то не сложилось, он слишком умный.
Flowtype
Awesome tools
Экономьте свое время
смотрите презентации в YouTube
в ускоренном режиме
Три презентации по времени двух!
ALT+SHIFT+Ю — быстрее ALT+SHIFT+Б — медленнее
Невероятная акция от YouTube!
Isomorphic JavaScript
Isomorphic JavaScript
What is Isomorphic JavaScript?
This is code, that can be run on client and server.
thin
server
Persistence
Application logic
View layer
Routing
DOM, forms,
animations
fat
server
thin
client
Now
fat
client
Early
@nodkz
Isomorphic JavaScript
Что дает Isomorphic JavaScript?
Уменьшение количества кода.
Код можно выполнить на клиенте 

и на сервере. SEO для поисковиков.
Скорость работы приложения на клиенте.
NodeJS
NodeJS
Вкраце о NodeJS
Однопоточный дает скорость, т.к. не нужно переключать
контекст между потоками
Cheap connections малое потребление памяти для подключений
600k idle connections on AWS M3.xlarge with 15GB RAM:
https://www.jayway.com/2015/04/13/600k-concurrent-websocket-connections-on-aws-using-node-js/
JavaScript да-да тот самый язык, если до этого писали
код только в браузере ;)
EventLoop внутренняя очередь заданий для
асинхронности
Cамое то для Isomorphic Apps с тонким сервером
NodeJS
Худшее о NodeJS: как и везде
Утечки памяти Если кросс-ссылоки, куча хитрых объектов и событий.
Лечится прямыми руками, либо супервизорами: pm2, forever
Exceptions
Иногда просто хочется сказать, и чё ты мне вывел?
Лечится гаданием на кофейной гуще. Или методом тыка.
npm install Куча модулей и файлов, все постоянно обновляется
и может сломаться, хотя у вас все работает.
Лечится жестким фиксированием версий в package.json.
Если используете shrinkwrap, то руками версии
в package.json править нельзя.
Однопоточный
Если что-то тяжелое начало выполняться,
то все остальное накрывается медным тазом.
Лечение запускать больше инстансов, либо дробить задачу
React
React
— What about Ember?
Андрей Листочкин
Горячо рекомендую посмотреть его доклады в YouTube.
Неимоверно крутой чувак.
В Ember уже давно все есть, что появляется в React’e:
компонентный подход, react-router, ожидается react cli.
А до Ember был Borland Delphi, a до — Xerox PARC, а до — только калькуляторы.
Но для меня важно, кто стоит за проектом и как развивает комьюнити.
До свидания, Ember — прости ты не мой выбор. 

Проблема во мне, проблема не в тебе!
Если не React,
то точно Ember!
React
React
VirtualDom Обновляет в DOM только то, что поменялось.
Быстро и без скрипа.
Great life cycles Делайте с компонентами что хотите, на любом
из этапов их жизненного цикла.
Errors on build Очень много проверок на этапе билда.
Events Своя event система, работающая во всех
браузерах/устройствах, которые использовал.
JS oriented HTML in JS. Not html extension.
Всё что вы пишите, пишите на JavaScript.
JSX syntax Удобное решение для разметки элементов.
Очень похож на html.
React
React Component lifecycle
Sorry, but I can not found an author of this diagram.
React
Rect-DOM styling
with CSSModules
Webpack config
Production DOM
Development DOM
React
React component
SASS syntax styles
React
react-dom
react-native
react-webGL
What in the future?
compatibility DOM and NATIVE components
Isomorphic react package that manipulates DOM on
client, or generates html string on the server.
A framework for building native apps using React.
Supported OS: >= Android 4.1 (API 16) and >= iOS 7.0.
Where is React works now?
react-canvas React Canvas adds the ability for React components 

to render to <canvas> rather than DOM
hell knows what else … https://github.com/reactjs/react-future
React
Fast start for existing project with React
https://www.youtube.com/watch?v=BF58ZJ1ZQxY
Ryan Florence
Don't Rewrite, React! at react-europe 2015
Начните переписывать функционал снизу вверх.
К примеру, начните с формочки добавления комментариев. Затем к
отображению комментария. Ну и под конец сделайте список. 

BOOM! И комментарии готовы.
Потом к статье, потом к меню. И не заметите как все приложение 

у вас на React.
С Angular такое не пройдет, надо
переписывать все сразу и целиком.
React
Quick start from scratch
React
Quick start from scratch
July 22, 2016 by Dan Abramov, Christopher Chedeau, Kevin Lacker
Create Apps with No Configuration
https://facebook.github.io/react/blog/2016/07/22/create-apps-with-no-configuration.html
May 5, 2016 by Konstantin Tarkus (@koistya)
React App SDK
Uses Webpack, Babel, ESLint under the hood
https://github.com/kriasoft/react-app
Uses Webpack, Babel, ESLint, Hot Loader, Postcss, Browser-sync
Why Kostya still does not work at Facebook?! I can not understand.
Best of the Best / Suggested Reading List
https://github.com/markerikson/react-redux-links
Curated tutorial and resource links by Mark Erikson (@acemarke)
This collection gets more than 150 reactions in my twitter.
React
Quick start from scratch
Other recommended resources:
https://www.udemy.com/user/sgslo/
For React recommended author is Stephen Grider
https://www.fullstackreact.com/articles/react-tutorial-cloning-yelp/
Paid courses on udemy.com
https://www.pluralsight.com/authors/cory-house
Building apps with React and Redux in ES6 by Cory House
http://egghead.io
Huge tutorial with screenshots: Cloning Yelp by Ari Lerner
Many lessons available free and by subscription
Wired parts in JS and NodeJS by Anthony Alicea
(also great courses by Docker, AWS)
Paid courses on pluralsight.com
https://www.udemy.com/user/anthonypalicea/
Many many FREE talks on YouTube. Eg. ReactEurope 2015-2016
https://www.youtube.com/channel/UCorlLn2oZfgOJ-FUcF2eZ1A
GraphQL
GraphQL
“With GraphQL, we could simply stop writing 

API documentation or reading it. 

I think that’s the dream of every developer.”
— by @arunoda
GraphQL is a query language
developed by Facebook
Lee Byron
Nicholas Schrock
Daniel Schafer
Authors before and after releasing GraphQL SPEC
GraphQL
GraphQL at any backend as you wish!
GraphQL
GraphQL with any mix of databases!
Implements any custom bussines logic.
Also works with existing code.
One GraphQL query may combine results from different data sources.
GraphQL
GraphQL at any client as you wish!
The best solution to fetch data
for web apps, mobile apps, and 3rd party clients.
Any nesting and combination of data in one request.
No more nor less then the client requests.
GraphQL
GraphiQL — interactive in-browser GraphQL IDE
http://toolbox.sangria-graphql.org/graphiql
Try it! http://graphql-swapi.parseapp.com/
http://reidex.io/
beginner lvl
medium lvl
expert lvl
/ˈɡrafək(ə)l/
GraphQL
DocumentationValidation, autosuggestion
GraphiQL schema introspection
GraphQL
Several queries in one request
Also please note: only requested data, no more nor less!
3 REST requests in single GraphQL query
GraphQL
Any nesting in one request
ProTIP: Use DataLoader for reducing over-fetching (one record several times)
https://github.com/facebook/dataloader
https://medium.com/apollo-stack/graphql-explained-5844742f195eHow nested queries works:
GraphQL
Fragments (preparation for components)
In GraphQL, fragments are the way to group commonly used fields and reuse them.
Components are perfect correlated with Fragments
Required DataRender instructions
GraphQL
Schema definition on server
Your First GraphQL Server by Clay Allsopp:
https://medium.com/the-graphqlhub/your-first-graphql-server-3c766ab4f0a2
GraphQL
Mutations and Subscriptions
Mutations = add, change or remove data on server
Subscriptions = send requested data, as soon you have new one
Mutation have similar syntax as Query.
But multiple Mutations in a single request are executed one by one.
I can not recommend any good OSS solution.
GraphQL
Any complex queries on your frontend
less network traffic
less time for processing
less time to develop
less request numbers
less possibilities for errors
less stress more success
GraphQL
До свидания, REST API
GraphQL
Tutorials
https://learngraphql.com
http://graphql.org/docs/getting-started/Official
Client
Useful OSS libraries
https://github.com/matthewmueller/graph.ql
Faster and simpler technique for creating and querying GraphQL schemas on server
https://github.com/mickhansen/graphql-sequelize
GraphQL & Relay for MySQL & Postgres via Sequelize
A GraphQL API created by reflection over a PostgreSQL schema
https://github.com/calebmer/postgraphql
My OSS family of packages graphql-compose
https://github.com/nodkz/graphql-compose
https://medium.com/apollo-stack/tutorial-building-a-graphql-server-cddaa023c035
Tutorial: How to build a GraphQL server
Relay
Relay
Components are perfect correlated with Fragments
Required DataRender instructions
Relay
A javascript framework
for building data-driven React application with GraphQL
Relay
React, Relay, GraphQL — all together
Relay
Conditional fetching Mutations
Optimistic updates
Pagination
Retry
Error handling
Rollback
Cache
Relay
Relay
https://www.youtube.com/results?search_query=relay+react
Talks from authors Steven Luscher, Joseph Savona, Greg Hurrell
Lokka — Simple JavaScript Client for GraphQL
Tutorials
Competitors
Official docs
https://facebook.github.io/relay/
https://github.com/kadirahq/lokka
Apollo is an incrementally-adoptable data stack that manages the
flow of data between clients and backends.
http://www.apollostack.com/
React, GraphQL, Relay, Nuclide, Flowtype, Jest
Harmonious work of all OSS projects by Facebook
You should not use Facebook OSS products, if you’ll take a financial
interest or any Patent Assertion against Facebook.
— Так что, у вас бэкенд с фронтендом
смешался?
До свидания, Bower, jQuery, современные 

wap-сайты, рендеринг для клиентов на сервере,
старый добрый императивный подход.
До свидания, бесполезные версии продуктов,
которые приходится по-взрослому обслуживать.
— Адаптивность? Нееее, не слышали.
Problems
Problems
Много всего нового!
Много терпения и желания!
React
Babel
Webpack
GraphQL
Relay
NodeJS
ES next
Много времени на изучение!
А ещё, надо всё друг с другом “поженить”!
nodkz
В этой жизни возможно все. Просто на
невозможное, требуется больше времени.
А жизнь слишком коротка, чтобы заниматься
вещами, которые ничего не меняют.

Weitere ähnliche Inhalte

Was ist angesagt?

Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Ontico
 
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановКомпонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановMoscowJS
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Ontico
 
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают ADN Digital Studio
 
Performance engineering stories from #fdminicon Saransk
Performance engineering stories from #fdminicon SaranskPerformance engineering stories from #fdminicon Saransk
Performance engineering stories from #fdminicon SaranskAlex Chistyakov
 
Знакомство с WebAssembly
Знакомство с WebAssemblyЗнакомство с WebAssembly
Знакомство с WebAssemblyNikita Zimin
 
JavaScript завтра / Сергей Рубанов (Exante Limited)
JavaScript завтра / Сергей Рубанов  (Exante Limited)JavaScript завтра / Сергей Рубанов  (Exante Limited)
JavaScript завтра / Сергей Рубанов (Exante Limited)Ontico
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word pressvovasik
 
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
 
Павел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузерыПавел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузерыUA Mobile
 
Обзор интернет браузеров
Обзор интернет браузеровОбзор интернет браузеров
Обзор интернет браузеровAlina Kolosova
 
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
Frontendlab: Cравнить Несравнимое  - Юлия ПучнинаFrontendlab: Cравнить Несравнимое  - Юлия Пучнина
Frontendlab: Cравнить Несравнимое - Юлия ПучнинаGeeksLab Odessa
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...IT-Portfolio
 
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Yandex
 
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"IT Event
 
Кэширование в веб-приложениях: что? где? когда?
Кэширование в веб-приложениях: что? где? когда?Кэширование в веб-приложениях: что? где? когда?
Кэширование в веб-приложениях: что? где? когда?CUSTIS
 
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Pavel Dovbush
 
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»DevGAMM Conference
 

Was ist angesagt? (20)

Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)
 
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановКомпонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
 
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
 
Performance engineering stories from #fdminicon Saransk
Performance engineering stories from #fdminicon SaranskPerformance engineering stories from #fdminicon Saransk
Performance engineering stories from #fdminicon Saransk
 
Знакомство с WebAssembly
Знакомство с WebAssemblyЗнакомство с WebAssembly
Знакомство с WebAssembly
 
JavaScript завтра / Сергей Рубанов (Exante Limited)
JavaScript завтра / Сергей Рубанов  (Exante Limited)JavaScript завтра / Сергей Рубанов  (Exante Limited)
JavaScript завтра / Сергей Рубанов (Exante Limited)
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
 
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
 
Павел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузерыПавел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузеры
 
Обзор интернет браузеров
Обзор интернет браузеровОбзор интернет браузеров
Обзор интернет браузеров
 
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
Frontendlab: Cравнить Несравнимое  - Юлия ПучнинаFrontendlab: Cравнить Несравнимое  - Юлия Пучнина
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
 
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
 
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
 
Кэширование в веб-приложениях: что? где? когда?
Кэширование в веб-приложениях: что? где? когда?Кэширование в веб-приложениях: что? где? когда?
Кэширование в веб-приложениях: что? где? когда?
 
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
 
Chef @DevWeb
Chef @DevWebChef @DevWeb
Chef @DevWeb
 
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
 
openSUSE Build Server от Б до Ю
openSUSE Build Server от Б до ЮopenSUSE Build Server от Б до Ю
openSUSE Build Server от Б до Ю
 

Andere mochten auch

Web Performance в Казнете
Web Performance в КазнетеWeb Performance в Казнете
Web Performance в КазнетеITCrowd Almaty
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаITCrowd Almaty
 
Мобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещахМобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещахITCrowd Almaty
 
Ключ от всех дверей: чем опасен Великий Казахстанский Файерволл
Ключ от всех дверей: чем опасен Великий Казахстанский ФайерволлКлюч от всех дверей: чем опасен Великий Казахстанский Файерволл
Ключ от всех дверей: чем опасен Великий Казахстанский ФайерволлITCrowd Almaty
 
Docker с чем едят и для чего используют
Docker с чем едят и для чего используютDocker с чем едят и для чего используют
Docker с чем едят и для чего используютITCrowd Almaty
 
ITCrowd 2 - Разработка крупного проекта в команде
ITCrowd 2 - Разработка крупного проекта в командеITCrowd 2 - Разработка крупного проекта в команде
ITCrowd 2 - Разработка крупного проекта в командеITCrowd Almaty
 
Чем бесят программисты
Чем бесят программистыЧем бесят программисты
Чем бесят программистыITCrowd Almaty
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Pavel Chertorogov
 
Александр Трищенко: Phalcon framework
Александр Трищенко: Phalcon frameworkАлександр Трищенко: Phalcon framework
Александр Трищенко: Phalcon frameworkOleg Poludnenko
 
An Introduction to ReactJS
An Introduction to ReactJSAn Introduction to ReactJS
An Introduction to ReactJSAll Things Open
 

Andere mochten auch (12)

На плаву!
На плаву!На плаву!
На плаву!
 
Web Performance в Казнете
Web Performance в КазнетеWeb Performance в Казнете
Web Performance в Казнете
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервиса
 
React + Flux
React + FluxReact + Flux
React + Flux
 
Мобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещахМобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещах
 
Ключ от всех дверей: чем опасен Великий Казахстанский Файерволл
Ключ от всех дверей: чем опасен Великий Казахстанский ФайерволлКлюч от всех дверей: чем опасен Великий Казахстанский Файерволл
Ключ от всех дверей: чем опасен Великий Казахстанский Файерволл
 
Docker с чем едят и для чего используют
Docker с чем едят и для чего используютDocker с чем едят и для чего используют
Docker с чем едят и для чего используют
 
ITCrowd 2 - Разработка крупного проекта в команде
ITCrowd 2 - Разработка крупного проекта в командеITCrowd 2 - Разработка крупного проекта в команде
ITCrowd 2 - Разработка крупного проекта в команде
 
Чем бесят программисты
Чем бесят программистыЧем бесят программисты
Чем бесят программисты
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)
 
Александр Трищенко: Phalcon framework
Александр Трищенко: Phalcon frameworkАлександр Трищенко: Phalcon framework
Александр Трищенко: Phalcon framework
 
An Introduction to ReactJS
An Introduction to ReactJSAn Introduction to ReactJS
An Introduction to ReactJS
 

Ähnlich wie Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки

Web programming modern tendencies
Web programming modern tendenciesWeb programming modern tendencies
Web programming modern tendenciesDarkestMaster
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakAmasty
 
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
 
Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningMihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningOdessaJS Conf
 
Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningMihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningMaria Kuneva
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplantit-people
 
Что нового в ASP.NET 5
Что нового в ASP.NET 5Что нового в ASP.NET 5
Что нового в ASP.NET 5Microsoft
 
Денис Измайлов, 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
 
Актуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработкеАктуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработкеDenis Izmaylov
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiAlexander Makarov
 
Node JS проблемы надежности, и пути их решения
Node JS проблемы надежности, и пути их решенияNode JS проблемы надежности, и пути их решения
Node JS проблемы надежности, и пути их решенияAlexander Kucherenko
 
Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)Viacheslav Eremin
 
Mobile Web Apps development essentials
Mobile Web Apps development essentialsMobile Web Apps development essentials
Mobile Web Apps development essentialsPavlo Iuriichuk
 
What do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScriptWhat do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScriptVasiliy Teliatnikov
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийMedia Gorod
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Anthony Marchenko
 

Ähnlich wie Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки (20)

Web programming modern tendencies
Web programming modern tendenciesWeb programming modern tendencies
Web programming modern tendencies
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis Bosak
 
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
 
Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningMihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine Learning
 
Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningMihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine Learning
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
 
Что нового в ASP.NET 5
Что нового в ASP.NET 5Что нового в ASP.NET 5
Что нового в ASP.NET 5
 
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьДенис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
 
JavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальностьJavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальность
 
Актуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработкеАктуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработке
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем Yii
 
00012 georgii
00012 georgii00012 georgii
00012 georgii
 
Node JS проблемы надежности, и пути их решения
Node JS проблемы надежности, и пути их решенияNode JS проблемы надежности, и пути их решения
Node JS проблемы надежности, и пути их решения
 
Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)
 
Invisible
InvisibleInvisible
Invisible
 
Mobile Web Apps development essentials
Mobile Web Apps development essentialsMobile Web Apps development essentials
Mobile Web Apps development essentials
 
What do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScriptWhat do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScript
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложений
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
 

Mehr von ITCrowd Almaty

Система управления конфигурациями Ansible
Система управления конфигурациями AnsibleСистема управления конфигурациями Ansible
Система управления конфигурациями AnsibleITCrowd Almaty
 
Система мониторинга Zabbix
Система мониторинга ZabbixСистема мониторинга Zabbix
Система мониторинга ZabbixITCrowd Almaty
 
Designer ≠ дизайнер
Designer ≠ дизайнерDesigner ≠ дизайнер
Designer ≠ дизайнерITCrowd Almaty
 
ITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основе
ITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основеITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основе
ITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основеITCrowd Almaty
 
ITCrowd - Метапрограммирование
ITCrowd - МетапрограммированиеITCrowd - Метапрограммирование
ITCrowd - МетапрограммированиеITCrowd Almaty
 
ITCrowd - Потенциал казахоязычной аудитории РК
ITCrowd - Потенциал казахоязычной аудитории РКITCrowd - Потенциал казахоязычной аудитории РК
ITCrowd - Потенциал казахоязычной аудитории РКITCrowd Almaty
 
ITCrowd - Почему и как я стал фрилансером?
ITCrowd - Почему и как я стал фрилансером?ITCrowd - Почему и как я стал фрилансером?
ITCrowd - Почему и как я стал фрилансером?ITCrowd Almaty
 
ITCrowd - Правильная структура лендинга
ITCrowd - Правильная структура лендингаITCrowd - Правильная структура лендинга
ITCrowd - Правильная структура лендингаITCrowd Almaty
 

Mehr von ITCrowd Almaty (10)

Система управления конфигурациями Ansible
Система управления конфигурациями AnsibleСистема управления конфигурациями Ansible
Система управления конфигурациями Ansible
 
Система мониторинга Zabbix
Система мониторинга ZabbixСистема мониторинга Zabbix
Система мониторинга Zabbix
 
WatchKit 101
WatchKit 101WatchKit 101
WatchKit 101
 
AngularJS
AngularJSAngularJS
AngularJS
 
Designer ≠ дизайнер
Designer ≠ дизайнерDesigner ≠ дизайнер
Designer ≠ дизайнер
 
ITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основе
ITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основеITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основе
ITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основе
 
ITCrowd - Метапрограммирование
ITCrowd - МетапрограммированиеITCrowd - Метапрограммирование
ITCrowd - Метапрограммирование
 
ITCrowd - Потенциал казахоязычной аудитории РК
ITCrowd - Потенциал казахоязычной аудитории РКITCrowd - Потенциал казахоязычной аудитории РК
ITCrowd - Потенциал казахоязычной аудитории РК
 
ITCrowd - Почему и как я стал фрилансером?
ITCrowd - Почему и как я стал фрилансером?ITCrowd - Почему и как я стал фрилансером?
ITCrowd - Почему и как я стал фрилансером?
 
ITCrowd - Правильная структура лендинга
ITCrowd - Правильная структура лендингаITCrowd - Правильная структура лендинга
ITCrowd - Правильная структура лендинга
 

Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки

  • 1.
  • 2. Бэкенд, фронтенд — всё смешалось. Экскурсия в будущее веб-разработки. Мой стэк для SPA.
  • 4. ES next and Babel Webpack and Tools Isomorphic JavaScript NodeJS and React Relay, GraphQL My history SPA and ServiceWorker
  • 6. My history 2001 2004 Сайт с анекдотами в школьном интранете. Веб-сайт nod.h1.ru с ответами на реферальные регистрации. HTML 2000 
 - hover на кнопках - анимированные GIF - under construction и powered by, - выпадающее меню вверх мастерства, - marquee 2004.04 Дата запуска Gmail Первое на моей памяти SPA wap.mobi.kz 2004.08 mobi.kz 2005.06 2005.02 AJAX 2006.09 jQuery 2006 2008 Автоматизация верстки журнала и газет Колёса, Крыша 31 апреля 2006 1 версии (www, wap) 2008.06
 AppStore 2009.05 NodeJS 2008.09 V8
  • 7. My history2010-11
 Responsive 2010 март 2010 2 версии сайтов
 отвязанные от газет 2011.08
 Bootstrap 2010.10
 Backbone 2011.12
 Meteor 2010
 Angular 1 2011.09
 Ember 1 2011 июнь 2011 новый сайт зарождение биллинга 2013 RoR, SEO, сборщики, tons of JS
  • 8. My history 2015 Sep 2 версия сайта
 и слияние с DNR.kz 2014.08 ServiceWorker 2015.08 Ember 22014-2016 and not ready yet Angular 2 RC 2013.03 React Aйрат Жаншуаков показал CodeKit Dan Abramov показал Hot Reload Sebastian Markbage влюбил принципами разработки React 2015 July 2015 Apr
  • 10. SPA and ServiceWorker Hello, Jake Archibald! 2014.08 работа в условиях потери связи управление кэшем ресурсов управление сетевыми HTTPS запросами До свидания, AppCaсhe https://developer.mozilla.org/ru/docs/Web/API/Service_Worker_API/Using_Service_Workers https://github.com/NekR/offline-plugin for webpack by Arthur Stolyar 66.8% in KZ 59% in Global caniuse.com ServiceWorker это —
  • 11. SPA and ServiceWorker Бум Mobile Apps проходит, приходит бум Single Page Applications. уже доступно SEO, если есть server side rendering не надо ничего устанавливать на телефон удешевление разработки (одна команда, вместо трех) Скорость и функционал немного не дотягивают до Mobile Apps Service Worker Cookbook: https://serviceworke.rs/ НО Мобильные приложения не вымрут, но шальных непонимающих заказчиков станет меньше.
  • 12. ES next и Babel
  • 13. ES next и Babel ES6 (ES2015, harmony) ES7 (ES2016) любые будущие proposals or possibilities ES next — get `ES next` and transform to `ES current`Babel — ES current — ES5 (ECMAScript 5) TC39 — комитет (люди которые решают, как улучшать язык) свои плагины в обход TC39 ES6 можно считать в`ES current` для SF10, CH52, FF49, Edge 14, Node 6 http://kangax.github.io/compat-table/es6/
  • 14. ES next и Babel transform syntax babel-preset-es2015 babel-polyfill new globals and object extensions
  • 15. ES next и Babel Arrow Functions in ES6
  • 16. ES next и Babel Default Parameters in ES6
  • 17. ES next и Babel Destructuring Assignment in ES6
  • 18. ES next и Babel Template Literals in ES6
  • 19. ES next и Babel Enhanced Object Literals in ES6
  • 20. ES next и Babel Classes in ES6
  • 21. ES next и Babel До свидания, CoffeeScript Так получается, что c ES next я могу больше чем с CoffeeScript. Для меня сахар ES6 уже вполне сопоставим с CoffeeScript. Async/await для меня важнее, чем отсутсвие скобочек в CoffeeScript. Import/export, уже не могу без ES6 модульности. В модулях я использую flowtype для проверки типов. И меня смущает, что до сих пор мало кто из больших компаний им пользуется.
  • 23. Webpack Webpack — ключевое слово module bundler
  • 24. Webpack Webpack может подключить любые файлы как модули В конфиге указываются лоадеры к расширениям файлов. Лоадеры обрабатывают их по вашим правилам. 
 При этом в JS код возвращается мета-информация. используете CSSModules со стилями? 
 тогда в stylesMap будет записан хэш { [имя класса из scss]: название после сборки } картинки получают уникальные названия для кеширования?
 тогда в imagePath будет записан новый уникальный uri до файла а ещё lazy loading, chunks, vendors и tree shaking
  • 25. Webpack The streaming build system Task Runner основан на конфигурации end 2011 основан на потоках mid 2013 http://sixrevisions.com/web-development/grunt-vs-gulp/ May 11, 2015 Grunt Gulp
  • 26. Webpack https://www.youtube.com/playlist?list=PLDyvV36pndZHfBThhg4Z0822EEG9VGenn Скринкаст от Ильи Кантора по Webpack 1: Rollup.js — the next-generation JavaScript module bundler. Tutorials Competitors Official docs http://webpack.github.io/docs http://rollupjs.org Browserify lets you require('modules') in the browser by bundling up all of your dependencies. http://browserify.org/
  • 27. Webpack До свидания, Grunt, Gulp — вы не для SPA
  • 29. Awesome tools До свидания, WebStorm, Sublime Atom — a hackable text editor for the 21st Century
  • 30. Awesome tools Atom не Atom, без этих плагинов: Nuclide от Facebook Дополнительно устанавливает много полезных пакетов. Поддерживает автокомплит, jump-to-definition, flowtype. Раз в неделю обновляется. LiveStyle для CSS, LESS и SCSS (Sergey Chikuyonok) Один большой минус, не нашел плагина с GUI для git’а, который был настолько же крут, как у WebStorm (IntelliJ IDEA). Atom поддерживает flowtype из коробки.
  • 31. Awesome tools ESLint Mocha+chai Create ram disk on MacOS: diskutil erasevolume hfsx my_ram_disk `hdiutil attach -nomount ram://1000000`; проверяет типы, наличие методов, очень глубоко сканирует код. Ловит баги до запуска JS кода. Интегрирован в Nuclide (Atom). Работает моментально, код компилировать не нужно. Обалденная вещь, если вы пишите библиотеку! проверяет ваш JS код на соответствие style-guide, находит простые ошибки по коду. Рекомендую eslint-config-airbnb Невероятно полезная вещь! для написания BDD тестов C Jest у меня что-то не сложилось, он слишком умный. Flowtype
  • 32. Awesome tools Экономьте свое время смотрите презентации в YouTube в ускоренном режиме Три презентации по времени двух! ALT+SHIFT+Ю — быстрее ALT+SHIFT+Б — медленнее Невероятная акция от YouTube!
  • 34. Isomorphic JavaScript What is Isomorphic JavaScript? This is code, that can be run on client and server. thin server Persistence Application logic View layer Routing DOM, forms, animations fat server thin client Now fat client Early @nodkz
  • 35. Isomorphic JavaScript Что дает Isomorphic JavaScript? Уменьшение количества кода. Код можно выполнить на клиенте 
 и на сервере. SEO для поисковиков. Скорость работы приложения на клиенте.
  • 37. NodeJS Вкраце о NodeJS Однопоточный дает скорость, т.к. не нужно переключать контекст между потоками Cheap connections малое потребление памяти для подключений 600k idle connections on AWS M3.xlarge with 15GB RAM: https://www.jayway.com/2015/04/13/600k-concurrent-websocket-connections-on-aws-using-node-js/ JavaScript да-да тот самый язык, если до этого писали код только в браузере ;) EventLoop внутренняя очередь заданий для асинхронности Cамое то для Isomorphic Apps с тонким сервером
  • 38. NodeJS Худшее о NodeJS: как и везде Утечки памяти Если кросс-ссылоки, куча хитрых объектов и событий. Лечится прямыми руками, либо супервизорами: pm2, forever Exceptions Иногда просто хочется сказать, и чё ты мне вывел? Лечится гаданием на кофейной гуще. Или методом тыка. npm install Куча модулей и файлов, все постоянно обновляется и может сломаться, хотя у вас все работает. Лечится жестким фиксированием версий в package.json. Если используете shrinkwrap, то руками версии в package.json править нельзя. Однопоточный Если что-то тяжелое начало выполняться, то все остальное накрывается медным тазом. Лечение запускать больше инстансов, либо дробить задачу
  • 39. React
  • 40. React — What about Ember? Андрей Листочкин Горячо рекомендую посмотреть его доклады в YouTube. Неимоверно крутой чувак. В Ember уже давно все есть, что появляется в React’e: компонентный подход, react-router, ожидается react cli. А до Ember был Borland Delphi, a до — Xerox PARC, а до — только калькуляторы. Но для меня важно, кто стоит за проектом и как развивает комьюнити. До свидания, Ember — прости ты не мой выбор. 
 Проблема во мне, проблема не в тебе! Если не React, то точно Ember!
  • 41. React React VirtualDom Обновляет в DOM только то, что поменялось. Быстро и без скрипа. Great life cycles Делайте с компонентами что хотите, на любом из этапов их жизненного цикла. Errors on build Очень много проверок на этапе билда. Events Своя event система, работающая во всех браузерах/устройствах, которые использовал. JS oriented HTML in JS. Not html extension. Всё что вы пишите, пишите на JavaScript. JSX syntax Удобное решение для разметки элементов. Очень похож на html.
  • 42. React React Component lifecycle Sorry, but I can not found an author of this diagram.
  • 43. React Rect-DOM styling with CSSModules Webpack config Production DOM Development DOM
  • 45. React react-dom react-native react-webGL What in the future? compatibility DOM and NATIVE components Isomorphic react package that manipulates DOM on client, or generates html string on the server. A framework for building native apps using React. Supported OS: >= Android 4.1 (API 16) and >= iOS 7.0. Where is React works now? react-canvas React Canvas adds the ability for React components 
 to render to <canvas> rather than DOM hell knows what else … https://github.com/reactjs/react-future
  • 46. React Fast start for existing project with React https://www.youtube.com/watch?v=BF58ZJ1ZQxY Ryan Florence Don't Rewrite, React! at react-europe 2015 Начните переписывать функционал снизу вверх. К примеру, начните с формочки добавления комментариев. Затем к отображению комментария. Ну и под конец сделайте список. 
 BOOM! И комментарии готовы. Потом к статье, потом к меню. И не заметите как все приложение 
 у вас на React. С Angular такое не пройдет, надо переписывать все сразу и целиком.
  • 48. React Quick start from scratch July 22, 2016 by Dan Abramov, Christopher Chedeau, Kevin Lacker Create Apps with No Configuration https://facebook.github.io/react/blog/2016/07/22/create-apps-with-no-configuration.html May 5, 2016 by Konstantin Tarkus (@koistya) React App SDK Uses Webpack, Babel, ESLint under the hood https://github.com/kriasoft/react-app Uses Webpack, Babel, ESLint, Hot Loader, Postcss, Browser-sync Why Kostya still does not work at Facebook?! I can not understand. Best of the Best / Suggested Reading List https://github.com/markerikson/react-redux-links Curated tutorial and resource links by Mark Erikson (@acemarke) This collection gets more than 150 reactions in my twitter.
  • 49. React Quick start from scratch Other recommended resources: https://www.udemy.com/user/sgslo/ For React recommended author is Stephen Grider https://www.fullstackreact.com/articles/react-tutorial-cloning-yelp/ Paid courses on udemy.com https://www.pluralsight.com/authors/cory-house Building apps with React and Redux in ES6 by Cory House http://egghead.io Huge tutorial with screenshots: Cloning Yelp by Ari Lerner Many lessons available free and by subscription Wired parts in JS and NodeJS by Anthony Alicea (also great courses by Docker, AWS) Paid courses on pluralsight.com https://www.udemy.com/user/anthonypalicea/ Many many FREE talks on YouTube. Eg. ReactEurope 2015-2016 https://www.youtube.com/channel/UCorlLn2oZfgOJ-FUcF2eZ1A
  • 51. GraphQL “With GraphQL, we could simply stop writing 
 API documentation or reading it. 
 I think that’s the dream of every developer.” — by @arunoda GraphQL is a query language developed by Facebook Lee Byron Nicholas Schrock Daniel Schafer Authors before and after releasing GraphQL SPEC
  • 52. GraphQL GraphQL at any backend as you wish!
  • 53. GraphQL GraphQL with any mix of databases! Implements any custom bussines logic. Also works with existing code. One GraphQL query may combine results from different data sources.
  • 54. GraphQL GraphQL at any client as you wish! The best solution to fetch data for web apps, mobile apps, and 3rd party clients. Any nesting and combination of data in one request. No more nor less then the client requests.
  • 55. GraphQL GraphiQL — interactive in-browser GraphQL IDE http://toolbox.sangria-graphql.org/graphiql Try it! http://graphql-swapi.parseapp.com/ http://reidex.io/ beginner lvl medium lvl expert lvl /ˈɡrafək(ə)l/
  • 57. GraphQL Several queries in one request Also please note: only requested data, no more nor less! 3 REST requests in single GraphQL query
  • 58. GraphQL Any nesting in one request ProTIP: Use DataLoader for reducing over-fetching (one record several times) https://github.com/facebook/dataloader https://medium.com/apollo-stack/graphql-explained-5844742f195eHow nested queries works:
  • 59. GraphQL Fragments (preparation for components) In GraphQL, fragments are the way to group commonly used fields and reuse them. Components are perfect correlated with Fragments Required DataRender instructions
  • 60. GraphQL Schema definition on server Your First GraphQL Server by Clay Allsopp: https://medium.com/the-graphqlhub/your-first-graphql-server-3c766ab4f0a2
  • 61. GraphQL Mutations and Subscriptions Mutations = add, change or remove data on server Subscriptions = send requested data, as soon you have new one Mutation have similar syntax as Query. But multiple Mutations in a single request are executed one by one. I can not recommend any good OSS solution.
  • 62. GraphQL Any complex queries on your frontend less network traffic less time for processing less time to develop less request numbers less possibilities for errors less stress more success
  • 64. GraphQL Tutorials https://learngraphql.com http://graphql.org/docs/getting-started/Official Client Useful OSS libraries https://github.com/matthewmueller/graph.ql Faster and simpler technique for creating and querying GraphQL schemas on server https://github.com/mickhansen/graphql-sequelize GraphQL & Relay for MySQL & Postgres via Sequelize A GraphQL API created by reflection over a PostgreSQL schema https://github.com/calebmer/postgraphql My OSS family of packages graphql-compose https://github.com/nodkz/graphql-compose https://medium.com/apollo-stack/tutorial-building-a-graphql-server-cddaa023c035 Tutorial: How to build a GraphQL server
  • 65. Relay
  • 66. Relay Components are perfect correlated with Fragments Required DataRender instructions Relay A javascript framework for building data-driven React application with GraphQL
  • 67. Relay React, Relay, GraphQL — all together
  • 68. Relay Conditional fetching Mutations Optimistic updates Pagination Retry Error handling Rollback Cache Relay
  • 69. Relay https://www.youtube.com/results?search_query=relay+react Talks from authors Steven Luscher, Joseph Savona, Greg Hurrell Lokka — Simple JavaScript Client for GraphQL Tutorials Competitors Official docs https://facebook.github.io/relay/ https://github.com/kadirahq/lokka Apollo is an incrementally-adoptable data stack that manages the flow of data between clients and backends. http://www.apollostack.com/
  • 70. React, GraphQL, Relay, Nuclide, Flowtype, Jest Harmonious work of all OSS projects by Facebook You should not use Facebook OSS products, if you’ll take a financial interest or any Patent Assertion against Facebook.
  • 71. — Так что, у вас бэкенд с фронтендом смешался?
  • 72. До свидания, Bower, jQuery, современные 
 wap-сайты, рендеринг для клиентов на сервере, старый добрый императивный подход. До свидания, бесполезные версии продуктов, которые приходится по-взрослому обслуживать. — Адаптивность? Нееее, не слышали.
  • 74. Problems Много всего нового! Много терпения и желания! React Babel Webpack GraphQL Relay NodeJS ES next Много времени на изучение! А ещё, надо всё друг с другом “поженить”!
  • 75. nodkz В этой жизни возможно все. Просто на невозможное, требуется больше времени. А жизнь слишком коротка, чтобы заниматься вещами, которые ничего не меняют.