![Page 1: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/1.jpg)
Студиявеб и мобильной разработки
aspirity.ru
Быков Илья, ведущий разработчик
Боевое применение Node.js[фронтовые заметки]
![Page 2: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/2.jpg)
и не сломать себе мозг
ASPIRITY – студия веб и мобильной разработки
1. Как переключиться с PHP на Node
![Page 3: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/3.jpg)
и не сломать себе мозг
ASPIRITY – студия веб и мобильной разработки
1. Как переключиться с PHP на Node
Личный опыт
- 2000-2001 гг. первый коммерческий проект в качестве FrontEnd JS разработчика
- с 2007 г. фриланс, разработка сайтов на PHP, работа в составе команд на удаленке
- с 2012 г. оформил ИП, поддержка наработанных клиентов, заказная разработка
- с 2015 г. руководство удаленной командой разработки, работа в команде
- 2016 г. участник команды тестирования Skype Translator
- с января 2017 г. ведущий разработчик, компания Aspirity
![Page 4: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/4.jpg)
ASPIRITY – студия веб и мобильной разработки
1. Как переключиться с PHP на Node и не сломать себе мозг
Предпосылки перехода на Node.js
- JavaScript был первым изученным языком - основы уже заложены
![Page 5: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/5.jpg)
ASPIRITY – студия веб и мобильной разработки
1. Как переключиться с PHP на Node и не сломать себе мозг
Предпосылки перехода на Node.js
- JavaScript был первым изученным языком - основы уже заложены
- Скорость работы - более высокая производительность
![Page 6: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/6.jpg)
ASPIRITY – студия веб и мобильной разработки
1. Как переключиться с PHP на Node и не сломать себе мозг
Предпосылки перехода на Node.js
- JavaScript был первым изученным языком - основы уже заложены
- Скорость работы - более высокая производительность
- Движок V8 - органичность
![Page 7: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/7.jpg)
ASPIRITY – студия веб и мобильной разработки
1. Как переключиться с PHP на Node и не сломать себе мозг
Предпосылки перехода на Node.js
- JavaScript был первым изученным языком - основы уже заложены
- Скорость работы - более высокая производительность
- Движок V8 - органичность
- Рутина и поиск новых технологий - стремительное развитие платформы
![Page 8: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/8.jpg)
ASPIRITY – студия веб и мобильной разработки
1. Как переключиться с PHP на Node и не сломать себе мозг
Предпосылки перехода на Node.js
- JavaScript был первым изученным языком - основы уже заложены
- Скорость работы - более высокая производительность
- Движок V8 - органичность
- WebRTC, сокеты - интерактивность в крови
- Рутина и поиск новых технологий - стремительное развитие платформы
![Page 9: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/9.jpg)
ASPIRITY – студия веб и мобильной разработки
1. Как переключиться с PHP на Node и не сломать себе мозг
Предпосылки перехода на Node.js
- JavaScript был первым изученным языком - основы уже заложены
- Скорость работы - более высокая производительность
- Движок V8 - органичность
- WebRTC, сокеты - интерактивность в крови
- JS-фреймворки (React, Angular, Inferno и т.д.) - прямая дорога в Node.js
- Рутина и поиск новых технологий - стремительное развитие платформы
![Page 10: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/10.jpg)
1. Как переключиться с PHP на Node и не сломать себе мозг
Что знает и умеет «LAMPовый разработчик»?
ASPIRITY – студия веб и мобильной разработки
Linux немного bash cron dns ...
Apache .htaccess .htpasswd mod_rewrite ini_set( … )
MySQL Таблицы Запросы Индексы Процедуры
PHP собственно php Html Шаблонизаторы (Smarty, xslt, tpl и т.д.) JavaScript
![Page 11: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/11.jpg)
1. Как переключиться с PHP на Node и не сломать себе мозг
Что знает разработчик Node.js?
ASPIRITY – студия веб и мобильной разработки
Linux bash cron dns навыки администрирования
JavaScript
теоретически, все…
![Page 12: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/12.jpg)
1. Как переключиться с PHP на Node и не сломать себе мозг
Первые трудности...
ASPIRITY – студия веб и мобильной разработки
- Отсутствие привычного «Конвейера обработки» - грамотная архитектура
![Page 13: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/13.jpg)
1. Как переключиться с PHP на Node и не сломать себе мозг
Первые трудности...
ASPIRITY – студия веб и мобильной разработки
- Сервер надо «писать самому» - express в помощь
![Page 14: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/14.jpg)
1. Как переключиться с PHP на Node и не сломать себе мозг
Первые трудности...
ASPIRITY – студия веб и мобильной разработки
- Замыкания и области видимости - с опытом проходит
![Page 15: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/15.jpg)
1. Как переключиться с PHP на Node и не сломать себе мозг
Первые трудности...
ASPIRITY – студия веб и мобильной разработки
- JavaScript оказывается, может быть жестким - внимательность, eslint, jshint
![Page 16: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/16.jpg)
1. Как переключиться с PHP на Node и не сломать себе мозг
Первые трудности...
ASPIRITY – студия веб и мобильной разработки
- Модульность - грамотная архитектура, опыт
![Page 17: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/17.jpg)
1. Как переключиться с PHP на Node и не сломать себе мозг
Первые трудности...
ASPIRITY – студия веб и мобильной разработки
- Асинхронность!!! - с опытом проходит
![Page 18: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/18.jpg)
1. Как переключиться с PHP на Node и не сломать себе мозг
Первые трудности...
ASPIRITY – студия веб и мобильной разработки
- Утечки памяти - профилирование, отладка
![Page 19: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/19.jpg)
2. Как жить с переломом мозга и можно ли извлечь из этого пользу
Чего я ожидал от перехода на Node.js:
ASPIRITY – студия веб и мобильной разработки
- Простого и понятного языка
Что получилось по факту:
- Попал в эпоху перехода на ES6
![Page 20: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/20.jpg)
2. Как жить с переломом мозга и можно ли извлечь из этого пользу
Чего я ожидал от перехода на Node.js:
ASPIRITY – студия веб и мобильной разработки
- Ухода от разделения на Front-end и Back-end
Что получилось по факту:
- Front-end еще более четко отделился от Back-end (SPA style)
![Page 21: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/21.jpg)
2. Как жить с переломом мозга и можно ли извлечь из этого пользу
Чего я ожидал от перехода на Node.js:
ASPIRITY – студия веб и мобильной разработки
- Единого языка и форматов во всех инстанциях (база данных, код сервера, код клиента)
Что получилось по факту:
- Застал эпоху расцвета Pug, когда он еще назывался Jade
![Page 22: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/22.jpg)
2. Как жить с переломом мозга и можно ли извлечь из этого пользу
Сегодняшний стек:
ASPIRITY – студия веб и мобильной разработки
- Unix (Ubuntu)
![Page 23: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/23.jpg)
2. Как жить с переломом мозга и можно ли извлечь из этого пользу
Сегодняшний стек:
ASPIRITY – студия веб и мобильной разработки
- Unix (Ubuntu)- Docker
![Page 24: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/24.jpg)
2. Как жить с переломом мозга и можно ли извлечь из этого пользу
Сегодняшний стек:
ASPIRITY – студия веб и мобильной разработки
- Unix (Ubuntu)- Docker- Node.js
![Page 25: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/25.jpg)
2. Как жить с переломом мозга и можно ли извлечь из этого пользу
Сегодняшний стек:
ASPIRITY – студия веб и мобильной разработки
- Unix (Ubuntu)- Docker- Node.js- MongoDB
![Page 26: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/26.jpg)
2. Как жить с переломом мозга и можно ли извлечь из этого пользу
Сегодняшний стек:
ASPIRITY – студия веб и мобильной разработки
- Unix (Ubuntu)- Docker- Node.js- MongoDB- RabbitMQ
![Page 27: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/27.jpg)
2. Как жить с переломом мозга и можно ли извлечь из этого пользу
Сегодняшний стек:
ASPIRITY – студия веб и мобильной разработки
- Unix (Ubuntu)- Docker- Node.js- MongoDB- RabbitMQ- Sphinx || Elasticsearch
![Page 28: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/28.jpg)
2. Как жить с переломом мозга и можно ли извлечь из этого пользу
Сегодняшний стек:
ASPIRITY – студия веб и мобильной разработки
- Unix (Ubuntu)- Docker- Node.js- MongoDB- RabbitMQ- Sphinx || Elasticsearch- React
![Page 29: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/29.jpg)
2. Как жить с переломом мозга и можно ли извлечь из этого пользу
Сегодняшний стек:
ASPIRITY – студия веб и мобильной разработки
- Unix (Ubuntu)- Docker- Node.js- MongoDB- RabbitMQ- Sphinx || Elasticsearch
express, babel, webpack, gulp, lodush, reactredux, axios, bootstrap, material-ui, momentisomorphic-fetch, eslint, jshint, devtools, fsconvict, mongoose, bluebird, passport, chaiistanbul, socket.io, faker ...
- React
![Page 30: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/30.jpg)
3. Опыт разработки реальных продуктов полностью на Javascript
С мая 2015 г. компания Aspirity выбрала стек Node.js основной платформой разработки.За это время был выполнен ряд значимых проектов:
ASPIRITY – студия веб и мобильной разработки
- Сайт-агрегатор для бронирования и поку1пки квестов в реальности
- Автоматизированная система управления коттеджным поселком "Шамони"
![Page 31: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/31.jpg)
3. Опыт разработки реальных продуктов полностью на Javascript
- Профильная социальная сеть
ASPIRITY – студия веб и мобильной разработки
![Page 32: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/32.jpg)
3. Опыт разработки реальных продуктов полностью на Javascript
- Сервис поиска по закупкам
ASPIRITY – студия веб и мобильной разработки
![Page 33: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/33.jpg)
3. Опыт разработки реальных продуктов полностью на Javascript
- GUI для спутниковой антенны
ASPIRITY – студия веб и мобильной разработки
![Page 34: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/34.jpg)
3. Опыт разработки реальных продуктов полностью на Javascript
Трудности, с которыми приходилось бороться:
ASPIRITY – студия веб и мобильной разработки
1. Проблемы из-за отсутствия строгой типизации переменных. Пришлось локализовать модуль, исправить ошибку.
![Page 35: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/35.jpg)
3. Опыт разработки реальных продуктов полностью на Javascript
Трудности, с которыми приходилось бороться:
ASPIRITY – студия веб и мобильной разработки
2. Разрастание State объекта redux
![Page 36: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/36.jpg)
3. Опыт разработки реальных продуктов полностью на Javascript
Трудности, с которыми приходилось бороться:
ASPIRITY – студия веб и мобильной разработки
3. Конфликт окружений для больших проектов
![Page 37: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/37.jpg)
3. Опыт разработки реальных продуктов полностью на Javascript
Трудности, с которыми приходилось бороться:
ASPIRITY – студия веб и мобильной разработки
4. Поддержка версий модулей. Версии желательно фиксировать перед сдачей проекта
![Page 38: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/38.jpg)
3. Опыт разработки реальных продуктов полностью на Javascript
Трудности, с которыми приходилось бороться:
ASPIRITY – студия веб и мобильной разработки
5. Жесткие системные ограничения. Решается выбором инструментов :-)
![Page 39: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/39.jpg)
3. Опыт разработки реальных продуктов полностью на Javascript
Трудности, с которыми приходилось бороться:
ASPIRITY – студия веб и мобильной разработки
6. Нагрузка, скорость работы, выделение процессов в отдельные потоки, массовые операции
![Page 40: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/40.jpg)
4. Full-stack Javascript устойчивая тенденция развития разработчика
- Единство языка располагает к наращиванию скиллов
ASPIRITY – студия веб и мобильной разработки
![Page 41: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/41.jpg)
4. Full-stack Javascript устойчивая тенденция развития разработчика
- В команде, работающей над проектом, Full-stack более полезен, даже если он задействован только на одной стороне силы
ASPIRITY – студия веб и мобильной разработки
![Page 42: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/42.jpg)
4. Full-stack Javascript устойчивая тенденция развития разработчика
- Для маленьких компаний проще составлять команду — Full-stack «затащит» проект
ASPIRITY – студия веб и мобильной разработки
![Page 43: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/43.jpg)
4. Full-stack Javascript устойчивая тенденция развития разработчика
- Отмазки вроде «я знаю PHP, зачем мне ваш JavaScript» больше не работают :-P
ASPIRITY – студия веб и мобильной разработки
![Page 44: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/44.jpg)
5. Правда ли, что проще уволиться, чем поддерживать большое приложение на Node?
Уволиться всегда можно, но это не наш метод! :)
ASPIRITY – студия веб и мобильной разработки
![Page 45: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/45.jpg)
6. Итоги, выводы
ASPIRITY – студия веб и мобильной разработки
- PHP – имеет свою нишу, на которую Node.js пока не покушается
- Node.js - уже зрелый мощный инструмент для мощных продуктов
- Переход на Node.js связан с трудностями, но они преодолимы
- Node.js сейчас на подъеме, активно развивается и улучшается
- Node.js показал себя очень комфортным в работе, при грамотном подходе
![Page 46: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных](https://reader033.vdocuments.net/reader033/viewer/2022042321/5f0b3d847e708231d42f89ac/html5/thumbnails/46.jpg)
или заходите в гости
Найдите меня в социальных сетях
Быков Илья
г. Красноярск, ул. Профсоюзов 3 ст. 3 офис 11(391) 205-00-55