
-
Урок 1. 00:11:35Почему NodeJS для backend?
-
Урок 2. 00:08:20Как устроен курс
-
Урок 3. 00:03:26Обзор проектов
-
Урок 4. 00:03:51Update - Обзор курсов
-
Урок 5. 00:03:40Подготовка окружения
-
Урок 6. 00:10:24Установка и версии NodeJS
-
Урок 7. 00:03:05Настройки VSCode
-
Урок 8. 00:01:28Вводное видео
-
Урок 9. 00:08:23Сравнение сред выполнения JS
-
Урок 10. 00:07:24Запускаем код и REPL
-
Урок 11. 00:13:24Модули в JavaScript
-
Урок 12. 00:12:12CommonJS Modules
-
Урок 13. 00:10:58ES Modules
-
Урок 14. 00:09:07Глобальные переменные
-
Урок 15. 00:22:09Events
-
Урок 16. 00:12:00Устройство Node.js
-
Урок 17. 00:09:00Event Loop
-
Урок 18. 00:11:26Таймеры
-
Урок 19. 00:17:44Пример работы event loop
-
Урок 20. 00:10:12Stack вызова
-
Урок 21. 00:14:42Worker threads
-
Урок 22. 00:11:46Измерение производительности
-
Урок 23. 00:20:19Использование worker threads
-
Урок 24. 00:06:29Spawn и exec
-
Урок 25. 00:07:44Fork
-
Урок 26. 00:19:49Упражнение - Производительность потоков
-
Урок 27. 00:17:53Устройство V8
-
Урок 28. 00:21:11Работа с памятью
-
Урок 29. 00:02:00Вводное видео
-
Урок 30. 00:09:37Обзор NPM
-
Урок 31. 00:05:29Авторизация и профиль
-
Урок 32. 00:14:15Разбор package.json
-
Урок 33. 00:21:26Управление зависимостями
-
Урок 34. 00:03:16Обзор приложения
-
Урок 35. 00:18:02Аргументы командной строки
-
Урок 36. 00:09:58Вывод в консоль
-
Урок 37. 00:12:16OS и path
-
Урок 38. 00:16:11Работа с файловой системой
-
Урок 39. 00:20:11Взаимодействие с API
-
Урок 40. 00:06:04Переменные окружения
-
Урок 41. 00:07:37Обработка ошибок
-
Урок 42. 00:14:17Упражнение - Завершение приложения
-
Урок 43. 00:04:34Публикация пакета в NPM
-
Урок 44. 00:04:36Npx и npm exec
-
Урок 45. 00:02:00Вводное видео
-
Урок 46. 00:09:20Простой http сервер
-
Урок 47. 00:04:21Переходим на express
-
Урок 48. 00:10:28Маршрутизация
-
Урок 49. 00:09:38Ответы клиенту
-
Урок 50. 00:05:33Router
-
Урок 51. 00:09:16Промежуточные обработчики
-
Урок 52. 00:05:52Почему TypeScript?
-
Урок 53. 00:18:19Начало работы с TypeScript
-
Урок 54. 00:12:22Базовые типы
-
Урок 55. 00:06:06Union типы
-
Урок 56. 00:10:14Interfaces и Types
-
Урок 57. 00:10:40Литеральные типы
-
Урок 58. 00:08:04Enum
-
Урок 59. 00:09:12Generics
-
Урок 60. 00:26:09Классы
-
Урок 61. 00:06:03Другие типы и возможности
-
Урок 62. 00:05:46Обзор архитектуры
-
Урок 63. 00:10:57Пишем класс приложения
-
Урок 64. 00:11:24Добавляем логгер
-
Урок 65. 00:15:55Базовый класс контроллера
-
Урок 66. 00:08:48Упражнение - Контроллер пользователей
-
Урок 67. 00:16:51Обработка ошибок
-
Урок 68. 00:12:22Разбор DI и IOC
-
Урок 69. 00:21:54Декораторы
-
Урок 70. 00:16:58Metadata Reflection
-
Урок 71. 00:17:06Внедряем InversifyJS
-
Урок 72. 00:07:16Упражнение - Улучшаем DI
-
Урок 73. 00:17:58Eslint и prettier
-
Урок 74. 00:05:54Подключение nodemon
-
Урок 75. 00:09:56Отладка
-
Урок 76. 00:14:12Анализ памяти
-
Урок 77. 00:12:34Мониторинг производительности
-
Урок 78. 00:02:47Улучшение архитектуры
-
Урок 79. 00:09:55Data transfer object
-
Урок 80. 00:10:38User entity
-
Урок 81. 00:12:47Сервис users
-
Урок 82. 00:06:00Middleware для роутов
-
Урок 83. 00:12:48Валидация данных
-
Урок 84. 00:17:24Сервис конфигурации
-
Урок 85. 00:21:06Работа с prisma
-
Урок 86. 00:16:07Репозиторий users
-
Урок 87. 00:13:03Упражнение - Логин пользователя
-
Урок 88. 00:05:51Работа JWT
-
Урок 89. 00:11:58Создание токена
-
Урок 90. 00:14:33Middleware для проверки jwt
-
Урок 91. 00:09:54Упражнение - Guard авторизации
-
Урок 92. 00:07:15Виды тестирования
-
Урок 93. 00:23:13Unit тесты
-
Урок 94. 00:05:18Упражнение - Новые unit тесты
-
Урок 95. 00:14:21E2e тесты
-
Урок 96. 00:10:59Упражнение - Дописываем e2e тесты
-
Урок 97. 00:04:31Куда двигаться дальше?
Новый промокод на май 2022 на покупку курса за 1090 рублей:
- Для покупки из России: https://learn.purpleschool.ru/school/courses
- Для покупки не из России: https://www.udemy.com/course/nodejs-start/?couponCode=01D52E6A1EA9BB9C9AE1
export class App{
logger: LoggerServise;
constructor(logger: LoggerService){
this.logger = logger;
}
....
}
если typescript позволяет писать короче:
export class App{
constructor(
public logger: LoggerService
){}
.....
}
public readonly logger: LoggerServise;
constructor(private readonly _logger: LoggerService){
this.logger = this._logger;
}
....
}
не досмотрел до этого момента, но я бы так написал в случае если нет необходимости делать logger публичным то можно оставить только то что в конструктор подгрузили
private readonly _logger: LoggerService
а так в целом дело вкуса и еще стоит избегать undefined possible полей класса можно в ESlint прописать жесткое правило
Новый промокод на апрель 2022 на покупку курса за 1090 рублей:
- Для покупки из России: https://learn.purpleschool.ru/school/courses
- Для покупки не из России: https://www.udemy.com/course/nodejs-start/?couponCode=DA301A2615F21B10DEFB
Новый промокод на март 2022 на покупку курса за 1090 рублей:
https://www.udemy.com/course/nodejs-start/?couponCode=C562201A191482E89FC0
Новый промокод на февраль 2022 на покупку курса за 1090 рублей:
https://www.udemy.com/course/nodejs-start/?couponCode=26E774E2D601D843C108
Новый промокод на январь 2022 на покупку курса за 1090 рублей:
https://www.udemy.com/course/nodejs-start/?couponCode=AF270ACE0039C6F4B547
1) зачем в stealRing использовать Array.map таким извращенным образом? Здесь метод мутирует импортируемый массив characters (для этого метод Map не предназначен вообще) обращаясь к объекту character по ссылке! Поэтому присваивании результата map в переменную вообще никакого смысла нет, т.к. к концу исполнения массив characters уже изменен.
2) зачем далее из const перезаписывать переменную в let, если уже при импорте можно объявить импортируемые переменные через let (или же просто отдельно импортировать characters через let)?
Новый промокод на декабрь 2021 на покупку курса за 1090 рублей:
https://www.udemy.com/course/nodejs-start/?couponCode=E5C2B9A7C953056741C4
Тогда я смогу создавать больше хороших курсов)