Nestjs - быстрый курс по лучшему Node js фреймворку
В этом небольшом курсе мы разберём базовые понятия Nestjs, посмотрим на его структуру и напишем небольшое API, которое будет сохранять данные в базу данных и даже посмотрим на написание тестов.
⚡ Ссылки
Курс по Nest.js и Typescript: purpleschool.ru/course/nestjs
Курс по микросервисам на Nest.js: purpleschool.ru/course/micros...
Видео про Nest.js: • Обзор Nestjs - лучший ...
Видео про AstroNvim: • AstroNvim - лучшая IDE...
Видео про декораторы в TypeScript 5.0: • Новые декораторы в Typ...
Документация Nest.js: nestjs.com
Мой telegram канал: t.me/purple_code_channel
Все мои курсы: purpleschool.ru
Разделы видео:
0:00 - Введение
0:10 - О Nest js
0:53 - Nest CLI
3:36 - Структура проекта
7:00 - Модули - Теория (modules)
10:01 - Модули - Практика
13:40 - Контроллеры - Теория (controllers)
15:03 - Контроллеры - Практика
18:54 - Декораторы контроллера
25:55 - Класс валидатор
31:34 - Провайдеры (providers)
35:44 - Работа с базой данных
43:05 - Другие провайдеры
45:50 - Тестирование
50:21 - Что дальше?
52:10 - Заключение
Пікірлер: 160
⚡ Ссылки Курс по Nest.js и Typescript: purpleschool.ru/course/nestjs Курс по микросервисам на Nest.js: purpleschool.ru/course/microservices Видео про Nest.js: kzread.info/dash/bejne/c6h32tauaLbbpsY.html Видео про AstroNvim: kzread.info/dash/bejne/fn-i16uaqsjPfZc.html Видео про декораторы в TypeScript 5.0: kzread.info/dash/bejne/X4560tSRhZaTgqQ.html Документация Nest.js: nestjs.com Мой telegram канал: t.me/purple_code_channel Все мои курсы: purpleschool.ru
@NightDrifter8008
Жыл бұрын
У тебя macOS на виртуалке стоит или это мак мини? И да кстати, какое у тебя железо стоит?
Обожаю Ваши уроки! Все четко и ясно! Спасибо за контент!
@PurpleSchool
Жыл бұрын
Спасибо!
Антон, большое спасибо за видео! Получилось очень сжато, информативно и доступно! Желаю Вам и вашему каналу успехов в развитии!
@PurpleSchool
11 ай бұрын
Спасибо!
Очень здорово, спасибо. На удивление получилось даже с базой данных, хотя до этого призму никогда не видел.
@PurpleSchool
Жыл бұрын
Супер 👍
Обожаю ваши уроки nest js как раз подъехал 🎉
@PurpleSchool
Жыл бұрын
Спасибо)
оооо почти час крутого контента, то что нужно!
@PurpleSchool
Жыл бұрын
Спасибо)
Антон, спасибо. Куплю твой курс по Nest.js , он того стоит.
@PurpleSchool
6 ай бұрын
Супер)
Прекрасный контент, спасибо :)
@PurpleSchool
10 ай бұрын
Пожалуйста!
супер уроки -ждем еще, понравилось
@PurpleSchool
Жыл бұрын
Спасибо!
Это великолепно!) Спасибо большое NestJS после Express кажется сильно удобнее) Особенно после того, как в Express пытался соблюдать структуру аналогичную в NestJS, используя импровизированные controllers и services)
@PurpleSchool
Жыл бұрын
Да, именно)
Очень полезное видео, спасибо!
@PurpleSchool
3 ай бұрын
Спасибо
Православный контент.
@franklucas9
3 ай бұрын
Святой лайк от Христа 👍
дякую Антон за класні уроки!
@PurpleSchool
Жыл бұрын
Спасибо!
Антон радует просто космическими темпами. Жду не дождусь Linux
@PurpleSchool
Жыл бұрын
Да, будет)
@harrisonwinston2850
Жыл бұрын
@@PurpleSchoolантон, можете сказать, почему используете prisma, а не тот же typeorm?
@PurpleSchool
Жыл бұрын
Удобные миграции, нет кучи багов, которые годами не решаются. Удобные API для запросов. В целом можно посмотреть мой обзор)
@yabnku
Жыл бұрын
@@PurpleSchool реквестую обзор на призму. насколько умные там миграции? умеют сами за изменениями в моделях следить?
Вот реально инфа структурирована. Если сказал контрллеры разбираем, то разбираем только контроллеры. Это настоящий преподаватель
@gogencheg
5 күн бұрын
рот широк
Оо супер
@PurpleSchool
Жыл бұрын
Спасибо)
Материал очень полезный От vim'a правда глаза вытекают, но это вкусовщина)
@PurpleSchool
3 ай бұрын
😂
ты лучший
@PurpleSchool
Жыл бұрын
Спасибо!
@siparat842
Жыл бұрын
@@PurpleSchool жду видео по поиску лучших практик
@moegreen8543
Жыл бұрын
он еще и комменты здесь - чистит ))
В догоночку к этому, было бы неплохо сделайть гайд по шарингу интерфейсов между микросервисами)
@PurpleSchool
Жыл бұрын
Это у меня уже разобрано в этому курсе: purpleschool.ru/course/microservices
@dsbasko
Жыл бұрын
@@PurpleSchool В курсе рассматривается кейм монорепы. Я же имею ввиду мультирепозиторий
@PurpleSchool
Жыл бұрын
Тогда npm самый просто вариант или git sub modules
ДА ДА ДА! Прошу уделите бэк энду больше времени, сделайте полный, подробный курс про Nest JS...
@PurpleSchool
Жыл бұрын
Так есть же: purpleschool.ru/course/nestjs
@user-fg6un4ho9z
Жыл бұрын
Мне курс ваш по восмерке понравился на удеми.
@PurpleSchool
Жыл бұрын
Спасибо)
В целом очень чувствовалось желание автора сделать контент понятным, и первая часть прям таки достойна уважения, но после середины появилась некая спешка, когда служебные слова и команды идут без особого пояснения, а тип пишем так потому что так надо. Называть эндпоин create тоже такое, потом ломаешь голову связанно с этой историей или нет, понятно что когда давно с технологией работаешь это на уровне интуиции, но когда только начинаешь знакомиться такие перлы расстраивают
Не подскажите, что бы Вы рекомендовали использоватm вместо typegoose (который Вы использовали в своем курсе, но библиотека уже не поддерживается разработчиками)?
@PurpleSchool
2 ай бұрын
Nestjs-mongoose, которая рассматривается в обновленных лекциях
Спасибо вам за курс а когда будет проект с использованию nestJs
@PurpleSchool
Жыл бұрын
В курсе с наставником есть практический проект по Nest. Или я не понял вопрос?
Спасибо за видео, хороший обзор. Подскажите, пожалуйста, IOC контейнер в Nest позволяет забиндить интерфейс на его реализацию? Контролер (да и почти любой сервис) ведь по хорошему должен зависеть от интерфейса а не от реализации.
@PurpleSchool
Жыл бұрын
Конечно, мы можем указать через интерфейс и указать useClass, который его реализует
Подскажите пожалуйста, а как удалить с помощью команды сгенерированные файлы после nest g mo co ...
спасибо за ваши видео. хотел спросить что вы думаете про springboot -там кажется всего так много и много написано, кажется что nest как-то намного проще и делает те же функции
@PurpleSchool
10 ай бұрын
Nest для JS и TS, и да, он достаточно простой
06:37 почему у меня строчка bootstrap(); подчеркнута и пишет про then?
А как правильно делать моки базы данных, чтобы в основной ничего не изменялось? Или предполагается, что тесты будут запущены на локальной бд?
@PurpleSchool
Жыл бұрын
E2e обычно запускаются но отдельной базе данных, которая перед тестами чистится. А для unit можно мокать методы репозитория.
Писал бак часть для диплома в стеке nest, graphql, prisma Такой кайф испытал от разработки, топ инструмент
@PurpleSchool
Жыл бұрын
Полностью согласен)
будет ли какой-то новый курс по несту новый с призмой или тайпорм?
@PurpleSchool
10 ай бұрын
Будет отдельный курс по архитекуре Nest и там будет Prisma
А как называется это шрифт? Очень приятен глазу
@PurpleSchool
3 ай бұрын
JetBrains Mono
подскажите что за программа с помощью которого вы отправляли http запросы: полльзуюсь обычно curl но ваш намного удобнее
@PurpleSchool
Ай бұрын
Это httpie
@abdurahman-he8lm
Ай бұрын
@@PurpleSchool огромный рахмет
Спасибо за полезный материал по NestJS. По ощущениям, работа с ним (судя по материалу) похожа на работа со Spring Boot в Java. Меня интересует вопрос по производительности. Вы упомянули, что "самые тяжелые приложения могут запускаться в течении 3-4 секунд". Является ли это правдой для систем. сравнимых Apache Airflow (и прочими Оркестраторами) или других систем, которые требуют множнство различнх внешних интеграций? Или подобная система будет загружаться дольше? Если да, то насколько?
@PurpleSchool
6 ай бұрын
У нас огромный проект стартует секунд 10, но это никак не влияет на работу.
@franklucas9
3 ай бұрын
Не стоит забывать в каких условиях запускаются проекты
Как можно визуализировать модули? Было бы очень интересно... Какой-то необычный тулинг - это всегда круто. Ещё видел что Nest.js недавно свои девтулзы выпустили, тоже очень интересно.
@PurpleSchool
8 ай бұрын
Их тулзы для визуализации зависимостей платные, но есть альтернатива. Сделаю видео.
сейчас версия 10 уже у nest, интересно сильно ли расходится с версией 9 на которой вы работаете тут ?
@PurpleSchool
10 ай бұрын
У меня есть отдельное видео с обзором: kzread.info/dash/bejne/fq2ru9udp7eXpJM.html
спасибо что лучше выбрать ларавел или нест для изучения и погружения и для дальнейшего - мучусь уже полгода-подскажите
@PurpleSchool
Жыл бұрын
Зависит от языка. Если TS. То сначала основы ноды, потом Nest, если PHP, то Laravel не плох, но это php…
@user-yf2er5vr8q
Жыл бұрын
@@PurpleSchool большое спасибо
Круто! Подскажите новичку пару мониторов для программирования. На каких вы работаете?
@PurpleSchool
9 ай бұрын
Это старые LG, один широкоформатный, второй 4K
Nest Next Nuxt - фантазия походу отсутствует напрочь ...
@PurpleSchool
Жыл бұрын
Вы ещё забыли Nixt: github.com/nix-community/nixt
@durko_o
Жыл бұрын
@@PurpleSchool ага, а вот что еще chatGPT нашёл) Node Nuxt Nest Next Neon Nava Nino
@PurpleSchool
Жыл бұрын
😂
@abbze8272
11 ай бұрын
И ладно бы это был только бэк, или только фронт, типа фишка направления. Но нет! 😅
@franklucas9
3 ай бұрын
Боже, ну хоть кто то это упомянул. Я думал только меня одного это бесит
А можно использовать всю эту красоту на фронтенде? Бекенд на другом языке будет написан
@PurpleSchool
10 ай бұрын
На фронте похожую архитектуру имеет Angular
Все гуд, а зачем эти красные мигающие глюки по-всюду? Типа тест на раздражительность?
Этот урок не для чайников прочтите документацию потом смотрите , так как слишком многое без пояснений . Это скорее практический урок для начинающих а не вводный урок. Все равно спасибо автору за такой труд
@PurpleSchool
7 ай бұрын
Спасибо
Круто! Когда ждать видос по Angular?😏
@PurpleSchool
Жыл бұрын
Сложный вопрос)
Покупал ваш курс по nestjs на юдеми в 2021 году. Есть ли принципиальные новшества в вашем курсе по nest на purpleschool? Там другой проект? Или новинки фреймворка освещены? Вот думаю брать или нет. Стартовые видео одни и те же.
@PurpleSchool
Жыл бұрын
Они одинаковы с курсом на Udemy. И там и там добавлены новые дополнительные лекции.
@user-wr4br7sr9q
Жыл бұрын
@@PurpleSchool спасибо за ответ)
Хотел вопрос задать, что делать если тебе не хочется изучать html and css? Нужно ли Бэкендеру изучать их? Можно ли изучать JavaScript для бэкенда, не зная Html and css?
@PurpleSchool
Жыл бұрын
Да, можно. У меня как раз так и построен курс: purpleschool.ru/course/javascript-advanced HTML и CSS тут не критичны
@Alex-ov9eo
4 ай бұрын
как только столкнешься с шаблонизаторами, будешь дергать фронтов на каждый чих
Сравнивали с Adonisjs?
@PurpleSchool
6 ай бұрын
Тут сложно сравнивать. Nest популярен, куча либ сторонних, а вот Adonis нет
Люди до изобретения компьютерной мыши би лайк:
А где посмотреть без TS(язык не совместим со мной)?
@PurpleSchool
7 ай бұрын
На Nest нельзя писать без TS, да и в целом без него не надо писать
@user-dp2po9wi2t
7 ай бұрын
@@PurpleSchool почему вдруг не надо. Я хочу писать на чистом js и этого достаточно. Чтобы писать чистый код не нужно внешних принудительных абстракций, нужна внутренняя дисциплина и хорошее командное код ревью
@franklucas9
3 ай бұрын
@@user-dp2po9wi2t Сразу видно, чел никогда не работал в крупных проектах) То что ты описал, выглядит гладко в теории, на практике это сломается уже спустя месяц
Курс всего за 2к? Круто.
@PurpleSchool
Жыл бұрын
Именно
Антон, застряло... на 39:15, подчеркивает 'beforeExit' и говорит что type string not assignable to parameter of type 'never'. PS: ok, заменил this.$on на process.on (нагуглил, хотя многое пока неясно..) и вроде заработало...
@franklucas9
3 ай бұрын
можно использовать ts-ignore но лучше этим не баловаться
здравствуйте Антон. досмотрел ваш курс, полностью разобрался с нестом, хорошо его понимаю. собственно вопрос, куда двигаться дальше? заканчиваю 4 курс университета, хочется уже устроиться на свою первую работу, но не знаю как и куда двигаться далее. заранее спасибо за ответ!
@PurpleSchool
Жыл бұрын
Все зависит от вашей цели, если утроится бэкендом, то готовиться и начинать проходить собеседования. Ну и конечно подтянуть базы данных и прочие сопутствующие вещи и теорию ноды. У меня она в отдельном курсе по Node.js
@chirkov
Жыл бұрын
Сначала устройся на работу, потом ты узнаешь что на самом деле ты полностью не разбираешься. Тебя ткнут в то, что ты не знаешь и поймешь куда двигаться дальше
@waltergibbs3041
Жыл бұрын
а еще жидким калом обосрешся на первых тасках.Увы и ах😢
@nocap7223
Жыл бұрын
@@waltergibbs3041 по себе не судят) сейчас стажируюсь, вроде как все отлично
@waltergibbs3041
Жыл бұрын
@@nocap7223 та скока я таких видел,все запуганные первые месяцы как хомячки при громком звуке.Вообще нужно за универ платить и работать паралельно
с. Я не буду писать ему отдельный интерфейс 25.33/ 26.10 Создадим папочку dto )
Никогда не понимал клавиатурного кретинизма у всех многочисленных учителей в KZread: как возможно [постоянно] ошибаться в каждом втором простом англ. слове, которых по работе десятки-сотни раз за день пишешь, ппц. Но видео в целом полезное.
@PurpleSchool
8 ай бұрын
А вы попробуйте держать повествование, план по лекции в голове, говорить и печатать.
Лучше всего обходиться без Next и ли Express. На чистой ноде можно делать всё.
@PurpleSchool
Жыл бұрын
А почему лучше? На чистой ноде делать велосипеды для рейтинга, промежуточных обработчиков и всего остального?
@franklucas9
3 ай бұрын
Дык а зачем нода, если есть плюсы. А там и до машинного кода не далеко...
У кого ошибка "Модуль ""@prisma/client"" не имеет экспортированного элемента "PrismaClient"." делаем следующее: -в shema.prisma находим generator client и добавляем туда "output = "../node_modules/.prisma/client"" у меня вышло так: generator client { provider = "prisma-client-js" output = "../node_modules/.prisma/client" } -снова делаем миграцию "npx prisma migrate dev" -меняем "import { PrismaClient } from "@prisma/client"";на "import { PrismaClient } from "../../node_modules/.prisma/client"" (Обратите внимание что путь к папке у вас может отличаться, но если вы делали все по видео то должен совпасть);
@user-gh7sk4xw3u
11 ай бұрын
А еще у вас могла возникнуть ошибка "Аргумент типа "string" нельзя назначить параметру типа "never"." в database.service.ts, в этом месте "this.$on('beforeExit', async () => {", я решил ее так: -зажимаем ctrl и кликаем в $on, попадаем в index.d.ts (это внутри модуля призмы) -находим строку " $on(eventType: V, callback: (event: V extends 'query' ? Prisma.QueryEvent : Prisma.LogEvent) => void): void;" (у меня это 59 строка, возможны отличия в зависимости от версии) -в части кода "eventType: V" добавляем "| string", чтобы вышло "eventType: V | string", должно перестать ругаться p.s. Баганый какойто этот ваш Prisma...
@PurpleSchool
11 ай бұрын
Странный хак, во всех проектах работало их коробки по инструкции на сайте.
А чем express хуже nest? Я глянул статистику гугл запросов, экспрес куда популярнее nest
@PurpleSchool
Жыл бұрын
Это не сравнимые вещи. Express - простейший фреймворк для обработки запросов. Чтобы написать на нём приложение полноценное надо затащить кучу всего: DI, тесты, архитектуру и так далее. Nest - готовое решение, которое в качестве http роутинга использует тот же экспесс (а можно в 2 нажатия заменить на fasify). Рекомендую посмотреть моё первое видео обзор, там детально рассказывается почему Nest.
@user-bs1ef6tt3e
Жыл бұрын
@@PurpleSchool спасибо за ответ)
@PutlerXLO
Жыл бұрын
@@PurpleSchool Так может не надо тащить свой DI в JS, превращая все это в медленное Г подобное джаве? =))
@PurpleSchool
Жыл бұрын
Не вижу связи между скорость и DI. DI и IOC позволяет нам строить грамотную архитектуру, писать простые тесты с mock.
@PutlerXLO
Жыл бұрын
@@PurpleSchool не особо вижу связи между тем, что он условно позволяет, и то как это все обильное обмазывание абстракциями сказывается на производительности конечного приложения и роста сложности входа (если действительно вникать, а не принимать черную коробку как должное). Это все не бесплатно, и мы уже все проходили в других ЯП, и опять вернулись на исходную. Для большого монолита наверно имеет право на жизнь, в контексте микросервисов - медленная сложная проприетарная черная коробка, которую не пофиксить самому в случае чего костылем, а это не то что обещает эта архитектура- простота, минимализм, всеядность и выразительность микросервисов. Вообще особого смысла в этом нет, если давно это придумано на джаве с уже давно известными плюсами и минусами.
Remix круче, нет?
@PurpleSchool
Ай бұрын
Remix - frontend фреймворк, nest - backend
@nikshirobokov
Ай бұрын
@@PurpleSchool нет, это fullstack
Видео старовато с нестом 9.0, хотя сейчас 9.4.
@PurpleSchool
Жыл бұрын
Видео записывалось вчера!) Он пишет всегда ^9.0.0 в package.json, а ставит последнюю 9-ю версию. ^ - означает что допустима версия до 10.
Производитедьность кто-то смотрел? Говорят этот оверхед понижает производительность express в 10 раз. При том, что express сам по себе медленный. А под fastify из коробки работает минимум, остальное костыли клепать надо.
@PurpleSchool
Жыл бұрын
Конечно, и про понижение в 10 раз, полный бред. Вот официальные бенчмарки, которые измеряются при PR: github.com/nestjs/nest/blob/master/benchmarks/all_output.txt Понижение менее 5%, которое можно считать не значительным.
юзлес гайд без пояснения действий
@abbze8272
11 ай бұрын
Согласен.
@franklucas9
3 ай бұрын
Это вам матч часть нужно учить. Нест узкоспециализированный инструмент, очевидно подразумевается что вы уже обладаете какой то базой, а это вам практический урок
видео не о чем. Рассказал бегло, что есть контролер, провайдер, модуль
Поставь пожалуйста микрофон подальше, ужасно слушать так, невозможно
У вас же есть нормальный курс по несту, зачем это инфоцыганство? Заяем очередной рваный пересказ документации?
@PurpleSchool
Жыл бұрын
Конечно есть. А это бесплатная часть, чтобы познакомить людей с фреймворком. При чем тут инфоциганство? Я продаю качественные продукты, но для этого людям надо понять качество подачи.