Node.js Middleware – никогда больше! [ru] / Тимур Шемсединов

preview_player
Показать описание
Видео с онлайн-конференции JavaScript fwdays'20 autumn, которая прошла 22 сентября 2020 года.

Описание доклада:
Почему приложение работает нестабильно, происходит утечка памяти и процесс часто вылетает? Почему вам сложно найти ошибку и нужно долго делать откладку? Почему правки занимают все больше и больше времени, а модули трудно свести вместе? Вы уже догадывались, что с мидлварами что-то не так, но не знаете как без них? Решение есть!

Таймкоды:
02:40 Что такое middleware?
05:26 Проблемы middleware
22:36 Race condition
24:26 Mixin pollution
29:50 Fat controller
41:40 Middleware provocates antipatterns
49:28 Layered architecture
56:20 Patterns and principles
1:04:05 Важные моменты и полезные ссылки
1:11:36 Что можно оставить в middleware?
1:12:40 Почему middleware стали популярны?
1:18:20 Мiddleware interceptor в Nest
1:20:08 Тypescript нужен всегда?
1:21:02 Decorators
1:23:07 Когда нужны ORM?
1:29:50 Oдна middleware для рефреш-токена или функции в каждом контроллере?
1:32:20 Prisma
1:36:16 Тесты для слов абстракции, unit tests
1:38:54 Фреймворк
1:40:40 Как исправлять легаси на проекте?

Страница доклада и презентации:

Больше докладов и видео по теме конференции:

Fwdays более 10 лет занимается организацией масштабных конференций для разработчиков таких направлений: JavaScript, .Net, Python, Data Science, PHP, QA, Highload, Architecture, DevOps, Databases.

Больше информации про актуальные события:

Подписывайтесь, чтобы первыми узнавать про старт продаж билетов по самой выгодной цене:
Рекомендации по теме
Комментарии
Автор

2:40 что такое middleware?
5:26 проблемы middleware
22:36 race condition
24:26 mixin pollution
29:50 fat controller
41:40 middleware provocates antipatterns
49:28 layered architecture
56:20 patterns and principles
1:04:05 важные моменты
1:09:36 полезные ссылки
1:11:36 что можно оставить в middleware
1:12:40 почему middleware стали популярны
1:18:20 middleware interceptor в nest
1:20:08 typescript нужен всегда?
1:21:02 o decorators
1:23:07 когда нужны ORM
1:25:27 зачем выбирать node.js
1:29:50 одна middleware для рефреш-токена или функции в каждом контроллере
1:32:20 о prisma
1:36:16 тесты для слоев абстракции, unit tests
1:38:54 на каком фреймворке пишешь?
1:40:40 как исправлять легаси на проекте?

antontelichenko
Автор

Огонечек! Супер информативно как всегда!

wardog
Автор

Потрясающая секция вопросов! Илья, спасибо, за неё

shnuyok
Автор

Я человек простой, вижу Тимура Гафаровича, ставлю лайк.

rakov-imxy
Автор

То видео, которое можно и нужно пересматривать по мере взросления, пока ты новичок и нет опыта, понятно немного, в основном только в теории. Потому нужно просматривать данное видео, или хотя бы некоторые части, раз в несколько месяцев... Потрясающе... Я пхпшник, прослушал не отрываясь. Единственный громадный минус это качество звука, но тут спасло приложение FxSound, где можно настроить эквалайзер.

qAntBcn
Автор

Звучит больше так, как буд-то в миделварах то проблемы нет, просто нужно писать по солиду и будет все хорошо

vd
Автор

Забавно смотреть, как Илья себя сдерживает от восклицания тезисам Тимура. Встретились специалисты разных потребностей рынка: Илья ориентирован на рынок в угоду скорости разработки, а Тимур - на качество. Очень интересно было бы все-таки послушать их диалог в более длительном формате.

carlschmaiser
Автор

Хороший доклад. Но я бы сказал, что основной поинт в том, что нужно правильно распределять ответственность в коде и не выпускать данные за пределы отвечающих за них обьектов/сервисов. Как по мне сами Middleware ни в чем не виноваты, кроме как в том, что with great power comes great responsibility :) Более того, если я не ошибаюсь, Middleware это и есть имплементация паттерна Chain of responsibility, который рекомендуют к использованию на последних слайдах доклада 😅

sviat_d
Автор

Спасибо Лектору.
По моему субъективному мнению, Тимур слегка переборщил с ненавистью к middlewares, по остальному согласен)

jjlgdlx
Автор

"Портяночное программирование)")). Тимур лучший. Спасибо за замечательный доклад и вклад в развитие сообщества Node.js.

dysekh
Автор

Тимур как всегда говорит грамотные вещи - практичность кода приоритетнее хайпа и хипстерских приблуд)

CokePaul
Автор

Про легче нового родить)) Мне кажется, стремление все переписать оно не всегда правильно. Знавал я таких людей, которые приходили на проект, и все переписывали заново, имея кучу багов. Потом все это опять скатывется в гамно, извините) Потом увольнялись, и мы, по факту, оставались на том же самом месте, где были до этого

MrGolovewkin
Автор

Неоднократно слышал как Тимур рекомендует Anna Henningsen как достойного иностранного спеца по ноде.
Так вот, я глянул ее выступления...Вопрос не по теме, просто хочу удовлетворить любопытство.. Анна трансгендер?

maksimsergeevich
Автор

Тимур у Вас столько видео-уроков и столько инфы, но есть ли книги написанные Вами, мне лучше заходит через чтение литературы. Если есть - скиньте пожалуйста. Лайк за видео, грамотно

railbatyrshin
Автор

Если Тимур увидит мой комментарий вдруг, к нему вопрос: Если я начинающий веб-разработчик, и мой мозг еще не засорен ни одним фреймворком, продолжать штурмовать чистую ноду? А то тяжело идет.. Все абстракции приходится писать самому.

maksimsergeevich
Автор

Почему речь русская, текст английский?

samolevich
Автор

TS только для проектов, логика которых не меняется? А смысл? Если проект не меняется, его можно как угодно написать - всем по барабану. Зачем там типы???

Если проект динамично меняется и имеет логику чуть сложнее, чем примеры от этого товарища, то TS тут показан! Ты меняешь формат аргументов, ответов - чего угодно: TS не даст тебе просто забыть во всех местах это учесть. Ты описываешь типы не для того, чтобы было красиво, а для того, чтобы они тебе помогали в твоём большом и сложном приложении именно в моменты изменений кода.

"Я не использую декораторы, я сам возвращаю метаданные с функцией..." - я тоже могу много всего сам написать, и Вася тоже может много всего сам написать. Что будет, если все станут такими умными и станут сами все писать? - Каждый будет переписывать код по-своему, тратя время, чтобы разобраться в логике Васи, Пети, Тимура при поддержке их кода... Остановитесь! Не менее умные дяди придумали уже декоратор, описали в документации, все знают и понимают как он работает. Изучите и вы и начните пользоваться. Не надо городить свои способы передачи метаданных, которые вы вряд ли задокументируете когда-либо.

Nest будет жить, но не долго? Тимур написал намного проще сервер на чистой ноде? В nest слишком сложно решаются простые задачи?

Ещё раз, и Вася, и Петя могут наговнякать кучу серверов на чистой ноде с рендером поварачивающегося квадратика в svg. Сегодня он файлы будет загружать через fs чтобы подгрузить методы, завтра файлы и метаданные из json, послезавтра все обрастет дополнительными костылями...

Это всё здорово с точки зрения практики, образования, обучения. Но не надо реальные проекты так писать.

Тимур в комментариях уже упоминал дядю Боба. О чем говорит наш старик? SOLID-принципы. Как раз они реализованы в nest. Прочитай документацию, возьми на вооружение и так же с умом используй.

Ах да, есть же фобия миддлваров и зависимостей... Но nest хорошо оттестирован, позволяет разводить зависимости, легко реализовать все уровни абстракции и при этом ЭТО ВСЕ ДОКУМЕНТИРОВАНО так, что и Вася, и Петя, и когда-нибудь Тимур сходу поймут и найдут все уровни в чужом проекте.

Из видео не услышал какие есть проблемы у миддлваров. Услышал о проблемах архитектуры и новичковых ошибках 50% программистов. (Если верить дяде Бобу, 50% - всегда новички) Так вот, если из функции можно насрать в глобальный скоп - это не значит что функция (как паттерн, объединяющий код для повторного вызова) плоха. Это значит, что нет культуры программирования.

Новички спрашивают, если мозг не засорен фреймворками, с чего лучше начать?

Начните с Азов. Функции, классы. Знаете ли вы классы? Многие воспринимают класс, как неймспейс, объединяющий несколько функций. Многие не понимают, зачем нужны инстанции, почему все нельзя сделать статическим. Я уж молчу о понимании полиморфизма... Вот разберитесь с этим сначала. Поймите принципы SOLID. Затем напишите сервер на чистой ноде. Но только в целях обучения и понимания, что происходит.
А затем возьмитесь за нормальный фреймворк типа nest и не пудрите никому мозг.

MAVrikrrr
Автор

хлебом не корми, дай пописать код )) динамически типизируемы гошник ))

SerZab
Автор

Нудновато. Видео чтобы досмотреть до конца нужно приложить усилия. Если половину жевки опустить, то и видео будет короче и нить разговора не будет теряться. Но после слов об отношении к orm, уважение к Тимуру возросло.

steps-in-forest
Автор

Суть видео: люди не умеют готовить миддлвары, поэтому они зло. Ну такое

Apocalypsht