Боевое применение node.js [фронтовые заметки] · 2019-05-21 · -...

46
Студия веб и мобильной разработки aspirity.ru Быков Илья, ведущий разработчик Боевое применение Node.js [фронтовые заметки]

Upload: others

Post on 23-Jun-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

Студиявеб и мобильной разработки

aspirity.ru

Быков Илья, ведущий разработчик

Боевое применение Node.js[фронтовые заметки]

Page 2: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

и не сломать себе мозг

ASPIRITY – студия веб и мобильной разработки

1. Как переключиться с PHP на Node

Page 3: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

и не сломать себе мозг

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 - уже зрелый мощный инструмент для мощных

ASPIRITY – студия веб и мобильной разработки

1. Как переключиться с PHP на Node и не сломать себе мозг

Предпосылки перехода на Node.js

- JavaScript был первым изученным языком - основы уже заложены

Page 5: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

ASPIRITY – студия веб и мобильной разработки

1. Как переключиться с PHP на Node и не сломать себе мозг

Предпосылки перехода на Node.js

- JavaScript был первым изученным языком - основы уже заложены

- Скорость работы - более высокая производительность

Page 6: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

ASPIRITY – студия веб и мобильной разработки

1. Как переключиться с PHP на Node и не сломать себе мозг

Предпосылки перехода на Node.js

- JavaScript был первым изученным языком - основы уже заложены

- Скорость работы - более высокая производительность

- Движок V8 - органичность

Page 7: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

ASPIRITY – студия веб и мобильной разработки

1. Как переключиться с PHP на Node и не сломать себе мозг

Предпосылки перехода на Node.js

- JavaScript был первым изученным языком - основы уже заложены

- Скорость работы - более высокая производительность

- Движок V8 - органичность

- Рутина и поиск новых технологий - стремительное развитие платформы

Page 8: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

ASPIRITY – студия веб и мобильной разработки

1. Как переключиться с PHP на Node и не сломать себе мозг

Предпосылки перехода на Node.js

- JavaScript был первым изученным языком - основы уже заложены

- Скорость работы - более высокая производительность

- Движок V8 - органичность

- WebRTC, сокеты - интерактивность в крови

- Рутина и поиск новых технологий - стремительное развитие платформы

Page 9: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

ASPIRITY – студия веб и мобильной разработки

1. Как переключиться с PHP на Node и не сломать себе мозг

Предпосылки перехода на Node.js

- JavaScript был первым изученным языком - основы уже заложены

- Скорость работы - более высокая производительность

- Движок V8 - органичность

- WebRTC, сокеты - интерактивность в крови

- JS-фреймворки (React, Angular, Inferno и т.д.) - прямая дорога в Node.js

- Рутина и поиск новых технологий - стремительное развитие платформы

Page 10: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

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 - уже зрелый мощный инструмент для мощных

1. Как переключиться с PHP на Node и не сломать себе мозг

Что знает разработчик Node.js?

ASPIRITY – студия веб и мобильной разработки

Linux bash cron dns навыки администрирования

JavaScript

теоретически, все…

Page 12: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

1. Как переключиться с PHP на Node и не сломать себе мозг

Первые трудности...

ASPIRITY – студия веб и мобильной разработки

- Отсутствие привычного «Конвейера обработки» - грамотная архитектура

Page 13: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

1. Как переключиться с PHP на Node и не сломать себе мозг

Первые трудности...

ASPIRITY – студия веб и мобильной разработки

- Сервер надо «писать самому» - express в помощь

Page 14: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

1. Как переключиться с PHP на Node и не сломать себе мозг

Первые трудности...

ASPIRITY – студия веб и мобильной разработки

- Замыкания и области видимости - с опытом проходит

Page 15: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

1. Как переключиться с PHP на Node и не сломать себе мозг

Первые трудности...

ASPIRITY – студия веб и мобильной разработки

- JavaScript оказывается, может быть жестким - внимательность, eslint, jshint

Page 16: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

1. Как переключиться с PHP на Node и не сломать себе мозг

Первые трудности...

ASPIRITY – студия веб и мобильной разработки

- Модульность - грамотная архитектура, опыт

Page 17: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

1. Как переключиться с PHP на Node и не сломать себе мозг

Первые трудности...

ASPIRITY – студия веб и мобильной разработки

- Асинхронность!!! - с опытом проходит

Page 18: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

1. Как переключиться с PHP на Node и не сломать себе мозг

Первые трудности...

ASPIRITY – студия веб и мобильной разработки

- Утечки памяти - профилирование, отладка

Page 19: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

2. Как жить с переломом мозга и можно ли извлечь из этого пользу

Чего я ожидал от перехода на Node.js:

ASPIRITY – студия веб и мобильной разработки

- Простого и понятного языка

Что получилось по факту:

- Попал в эпоху перехода на ES6

Page 20: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

2. Как жить с переломом мозга и можно ли извлечь из этого пользу

Чего я ожидал от перехода на Node.js:

ASPIRITY – студия веб и мобильной разработки

- Ухода от разделения на Front-end и Back-end

Что получилось по факту:

- Front-end еще более четко отделился от Back-end (SPA style)

Page 21: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

2. Как жить с переломом мозга и можно ли извлечь из этого пользу

Чего я ожидал от перехода на Node.js:

ASPIRITY – студия веб и мобильной разработки

- Единого языка и форматов во всех инстанциях (база данных, код сервера, код клиента)

Что получилось по факту:

- Застал эпоху расцвета Pug, когда он еще назывался Jade

Page 22: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

2. Как жить с переломом мозга и можно ли извлечь из этого пользу

Сегодняшний стек:

ASPIRITY – студия веб и мобильной разработки

- Unix (Ubuntu)

Page 23: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

2. Как жить с переломом мозга и можно ли извлечь из этого пользу

Сегодняшний стек:

ASPIRITY – студия веб и мобильной разработки

- Unix (Ubuntu)- Docker

Page 24: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

2. Как жить с переломом мозга и можно ли извлечь из этого пользу

Сегодняшний стек:

ASPIRITY – студия веб и мобильной разработки

- Unix (Ubuntu)- Docker- Node.js

Page 25: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

2. Как жить с переломом мозга и можно ли извлечь из этого пользу

Сегодняшний стек:

ASPIRITY – студия веб и мобильной разработки

- Unix (Ubuntu)- Docker- Node.js- MongoDB

Page 26: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

2. Как жить с переломом мозга и можно ли извлечь из этого пользу

Сегодняшний стек:

ASPIRITY – студия веб и мобильной разработки

- Unix (Ubuntu)- Docker- Node.js- MongoDB- RabbitMQ

Page 27: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

2. Как жить с переломом мозга и можно ли извлечь из этого пользу

Сегодняшний стек:

ASPIRITY – студия веб и мобильной разработки

- Unix (Ubuntu)- Docker- Node.js- MongoDB- RabbitMQ- Sphinx || Elasticsearch

Page 28: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

2. Как жить с переломом мозга и можно ли извлечь из этого пользу

Сегодняшний стек:

ASPIRITY – студия веб и мобильной разработки

- Unix (Ubuntu)- Docker- Node.js- MongoDB- RabbitMQ- Sphinx || Elasticsearch- React

Page 29: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

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 - уже зрелый мощный инструмент для мощных

3. Опыт разработки реальных продуктов полностью на Javascript

С мая 2015 г. компания Aspirity выбрала стек Node.js основной платформой разработки.За это время был выполнен ряд значимых проектов:

ASPIRITY – студия веб и мобильной разработки

- Сайт-агрегатор для бронирования и поку1пки квестов в реальности

- Автоматизированная система управления коттеджным поселком "Шамони"

Page 31: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

3. Опыт разработки реальных продуктов полностью на Javascript

- Профильная социальная сеть

ASPIRITY – студия веб и мобильной разработки

Page 32: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

3. Опыт разработки реальных продуктов полностью на Javascript

- Сервис поиска по закупкам

ASPIRITY – студия веб и мобильной разработки

Page 33: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

3. Опыт разработки реальных продуктов полностью на Javascript

- GUI для спутниковой антенны

ASPIRITY – студия веб и мобильной разработки

Page 34: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

3. Опыт разработки реальных продуктов полностью на Javascript

Трудности, с которыми приходилось бороться:

ASPIRITY – студия веб и мобильной разработки

1. Проблемы из-за отсутствия строгой типизации переменных. Пришлось локализовать модуль, исправить ошибку.

Page 35: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

3. Опыт разработки реальных продуктов полностью на Javascript

Трудности, с которыми приходилось бороться:

ASPIRITY – студия веб и мобильной разработки

2. Разрастание State объекта redux

Page 36: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

3. Опыт разработки реальных продуктов полностью на Javascript

Трудности, с которыми приходилось бороться:

ASPIRITY – студия веб и мобильной разработки

3. Конфликт окружений для больших проектов

Page 37: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

3. Опыт разработки реальных продуктов полностью на Javascript

Трудности, с которыми приходилось бороться:

ASPIRITY – студия веб и мобильной разработки

4. Поддержка версий модулей. Версии желательно фиксировать перед сдачей проекта

Page 38: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

3. Опыт разработки реальных продуктов полностью на Javascript

Трудности, с которыми приходилось бороться:

ASPIRITY – студия веб и мобильной разработки

5. Жесткие системные ограничения. Решается выбором инструментов :-)

Page 39: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

3. Опыт разработки реальных продуктов полностью на Javascript

Трудности, с которыми приходилось бороться:

ASPIRITY – студия веб и мобильной разработки

6. Нагрузка, скорость работы, выделение процессов в отдельные потоки, массовые операции

Page 40: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

4. Full-stack Javascript устойчивая тенденция развития разработчика

- Единство языка располагает к наращиванию скиллов

ASPIRITY – студия веб и мобильной разработки

Page 41: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

4. Full-stack Javascript устойчивая тенденция развития разработчика

- В команде, работающей над проектом, Full-stack более полезен, даже если он задействован только на одной стороне силы

ASPIRITY – студия веб и мобильной разработки

Page 42: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

4. Full-stack Javascript устойчивая тенденция развития разработчика

- Для маленьких компаний проще составлять команду — Full-stack «затащит» проект

ASPIRITY – студия веб и мобильной разработки

Page 43: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

4. Full-stack Javascript устойчивая тенденция развития разработчика

- Отмазки вроде «я знаю PHP, зачем мне ваш JavaScript» больше не работают :-P

ASPIRITY – студия веб и мобильной разработки

Page 44: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

5. Правда ли, что проще уволиться, чем поддерживать большое приложение на Node?

Уволиться всегда можно, но это не наш метод! :)

ASPIRITY – студия веб и мобильной разработки

Page 45: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

6. Итоги, выводы

ASPIRITY – студия веб и мобильной разработки

- PHP – имеет свою нишу, на которую Node.js пока не покушается

- Node.js - уже зрелый мощный инструмент для мощных продуктов

- Переход на Node.js связан с трудностями, но они преодолимы

- Node.js сейчас на подъеме, активно развивается и улучшается

- Node.js показал себя очень комфортным в работе, при грамотном подходе

Page 46: Боевое применение Node.js [фронтовые заметки] · 2019-05-21 · - Node.js - уже зрелый мощный инструмент для мощных

или заходите в гости

Найдите меня в социальных сетях

Быков Илья

г. Красноярск, ул. Профсоюзов 3 ст. 3 офис 11(391) 205-00-55