Темная тема
NodeJS - The Complete Guide (Deno, REST APIs, GraphQL)
01. Введение
001 - Введение в модуль
002 - Что такое Node.js
003 - Установка Node.js и создание нашего первого приложения
004 - Роль использования Node.js
005 - Обзор курса
006 - Как получить максимальную пользу от курса
007 - Работа с REPL по сравнению с использованием файлов
02. JavaScript - Повторение
008 - Введение в модуль
009 - JavaScript в кратком изложении
010 - Обновление основного синтаксиса
011 - let и const
012 - Стрелочные функции
013 - Работа с объектами, свойствами и методами
014 - Массивы и методы массивов
015 - Массивы, объекты и ссылочные типы
016 - Операторы spread и rest
017 - Деструктуризация
018 - Асинхронный код и промисы
019 - Заключение
03. Основы
020 - Введение в модуль
021 - Как работает веб
022 - Создание сервера на Node
023 - Жизненный цикл Node и цикл событий
024 - Запросы
025 - Отправка ответов
026 - Маршрутизация запросов
027 - Перенаправление запросов
028 - Разбор тел запросов
029 - Событийно-управляемое выполнение кода
030 - Блокирующий и неблокирующий код
031 - Node.js - Взгляд за кулисы
032 - Использование системы модулей Node
033 - Итоги
034 - Практика - Задача
035 - Практика - Решение
04. Разработка и отладка
036 - Введение в модуль
037 - NPM-скрипты
038 - Установка сторонних пакетов
039 - Использование Nodemon для автоматических перезапусков
040 - Типы ошибок
041 - Поиск и исправление синтаксических ошибок
042 - Обработка ошибок времени выполнения
043 - Логические ошибки
044 - Использование отладчика
045 - Автоматический перезапуск отладчика после изменений
046 - Изменение переменных в консоли отладки
047 - Итоги
05. Express.js
048 - Введение в модуль
049 - Что такое Express.js
050 - Установка Express.js
051 - Добавление промежуточного ПО (Middleware)
052 - Как работает Middleware
053 - Взгляд изнутри
054 - Обработка различных маршрутов
055 - Задача
056 - Решение
057 - Парсинг входящих запросов
058 - Ограничение выполнения Middleware для POST-запросов
059 - Использование Express Router
060 - Добавление страницы 404 - Ошибки
061 - Фильтрация путей
062 - Создание HTML-страниц
063 - Отдача HTML-страниц
064 - Возврат страницы 404
065 - Использование вспомогательной функции для навигации
066 - Стилизация наших страниц
067 - Статическая отдача файлов
068 - Навигация - Задача
069 - Навигация - Решение
070 - Итоги
06. Динамический контент и шаблонизаторы
071 - Введение в модуль
072 - Обмен данными - Запросы и пользователи
073 - Обзор шаблонизаторов
074 - Установка и настройка Pug
075 - Вывод динамического контента
076 - Конвертация HTML-файлов в Pug
077 - Добавление макета (Layout)
078 - Завершение шаблона Pug
079 - Работа с Handlebars
080 - Переход проекта на Handlebars
081 - Добавление макета в Handlebars
082 - Работа с EJS
083 - Создание макета с частичными шаблонами
084 - Итоги
085 - Шаблонизаторы - Задача
086 - Шаблонизаторы - Решение
087 - Разбор задания (дубль 086 - удалено)
Видео недоступно
07. Model-View-Controller (MVC)
088 - Введение в модуль
089 - Что такое MVC
090 - Добавление контроллеров
091 - Завершение работы с контроллерами
092 - Добавление модели Product
093 - Сохранение данных в файлах через модель
094 - Получение данных из файлов через модель
095 - Рефакторинг кода работы с файловым хранилищем
096 - Итоги
08. Дополнительное улучшение приложения
097 - Введение в модуль
098 - Создание структуры магазина
099 - Работа с навигацией
100 - Регистрация маршрутов
101 - Хранение данных о продуктах
102 - Отображение данных о продуктах
103 - Редактирование и удаление продуктов
104 - Добавление нового товара
09. Динамические маршруты
105 - Введение в модуль
106 - Подготовка
107 - Добавление ID продукта в путь
108 - Извлечение динамических параметров
109 - Загрузка данных деталей продукта
110 - Отображение детального представления продукта
111 - Передача данных с POST-запросами
112 - Добавление модели корзины
113 - Использование параметров запроса (Query Params)
114 - Предварительное заполнение данными страницы редактирования
115 - Ссылка на страницу редактирования
116 - Редактирование данных продукта
117 - Добавление функционала удаления продукта
118 - Удаление элементов корзины
119 - Отображение элементов корзины на странице корзины
120 - Удаление элементов корзины
121 - Исправление бага при удалении продукта
122 - Итоги
10. Динамические маршруты
123 - Введение в модуль
124 - Выбор базы данных
125 - Введение в NoSQL
126 - Сравнение SQL и NoSQL
127 - Настройка MySQL
128 - Подключение приложения к SQL-базе данных
129 - Основы SQL и создание таблиц
130 - Получение данных
131 - Получение списка продуктов
132 - Получение продуктов - Практическое задание
133 - Вставка данных в базу данных
134 - Получение одного продукта с условием WHERE
135 - Итоги
11. Sequelize
136 - Введение в модуль
137 - Что такое Sequelize
138 - Подключение к базе данных
139 - Определение модели
140 - Синхронизация определений JavaScript с базой данных
141 - Вставка данных и создание продукта
142 - Получение данных и поиск продуктов
143 - Получение одного продукта с использованием условия where
144 - Получение продуктов для администратора
145 - Обновление продуктов
146 - Удаление продуктов
147 - Создание модели пользователя
148 - Добавление отношения один-ко-многим
149 - Создание и управление тестовым пользователем
150 - Использование магических методов ассоциации
151 - Получение связанных продуктов
152 - Отношения один-ко-многим и многие-ко-многим
153 - Создание и получение корзины
154 - Добавление новых продуктов в корзину
155 - Добавление существующих продуктов, получение элементов корзины
156 - Удаление связанных элементов и продуктов корзины
157 - Добавление модели заказа
158 - Сохранение элементов корзины как элементы заказа
159 - Сброс корзины и получение*вывод заказов
160 - Заключение
12. NoSQL и использование MongoDB
161 - Введение в модуль
162 - Что такое MongoDB
163 - Отношения в NoSQL
164 - Настройка MongoDB
165 - Установка драйвера MongoDB
166 - Создание соединения с базой данных
167 - Завершение настройки соединения с базой данных
168 - Использование соединения с базой данных
169 - Создание продуктов
170 - Понимание MongoDB Compass
171 - Получение всех продуктов
172 - Получение одного продукта
173 - Настройка работы кнопок редактирования и удаления
174 - Работа с моделью продукта для его редактирования
175 - Завершение кода обновления продукта
176 - Заметка об обновлении продуктов
177 - Удаление продуктов
178 - Исправление функциональности добавления продукта
179 - Создание новых пользователей
180 - Хранение пользователя в нашей базе данных
181 - Работа с товарами в корзине и заказами
182 - Добавление функциональности Добавить в корзину
183 - Хранение нескольких товаров в корзине
184 - Отображение товаров в корзине
185 - Исправление ошибки
186 - Удаление товаров из корзины
187 - Добавление заказа
188 - Добавление связанных данных заказа
189 - Получение заказов
190 - Удаление удаленных товаров из корзины
191 - Заключение
13. Mongoose
192 - Введение в модуль
193 - Что такое Mongoose
194 - Подключение к серверу MongoDB с помощью Mongoose
195 - Создание схемы продукта
196 - Сохранение данных через Mongoose
197 - Получение всех продуктов
198 - Получение одного продукта
199 - Обновление продуктов
200 - Удаление продуктов
201 - Добавление и использование модели пользователя
202 - Использование связей в Mongoose
203 - Один важный момент при получении связанных данных
204 - Работа с корзиной покупок
205 - Загрузка корзины
206 - Удаление элементов из корзины
207 - Создание и получение заказов
208 - Хранение всех данных, связанных с заказом
209 - Очистка корзины после сохранения заказа
210 - Получение и отображение заказов
211 - Завершение
14. Сессии и Куки
212 - Введение в модуль
213 - Что такое Cookie
214 - Текущее состояние проекта
215 - Опционально* Создание формы входа
216 - Добавление решения для входа на основе запроса
217 - Установка Cookie
218 - Манипулирование Cookie
219 - Настройка Cookie
220 - Что такое сессия
221 - Инициализация middleware для сессий
222 - Использование middleware для сессий
223 - Использование MongoDB для хранения сессий
224 - Краткое резюме
225 - Проблема
226 - Решение
227 - Удаление Cookie
228 - Исправление мелких ошибок
229 - Возвращение функциональности Добавить в корзину
230 - Два небольших улучшения
231 - Завершение
15. Добавление аутентификации
232 - Введение в модуль
233 - Что такое аутентификация
234 - Как реализуется аутентификация
235 - Обновленное состояние проекта
236 - Реализация процесса аутентификации
237 - Шифрование паролей
238 - Небольшое улучшение кода
239 - Добавление функциональности входа
240 - Работа над защитой маршрутов
241 - Использование middleware для защиты маршрутов
242 - Понимание CSRF-атак
243 - Использование CSRF-токена
244 - Добавление защиты от CSRF
245 - Исправление кнопки заказа
246 - Предоставление обратной связи пользователю
247 - Опционально* Стилизация сообщений об ошибках
248 - Завершение работы с flash-сообщениями
249 - Добавление дополнительных flash-сообщений
250 - Завершение
16. Отправка электронных писем
251 - Введение в модуль
252 - Как работает отправка писем
253 - Использование SendGrid
254 - Использование Nodemailer для отправки письма
255 - Потенциальные ограничения для крупных приложений
17. Продвинутая аутентификация
256 - Введение в модуль
257 - Сброс паролей
258 - Реализация логики токенов
259 - Создание токена
260 - Создание формы сброса пароля
261 - Добавление логики обновления пароля
262 - Зачем нужна авторизация
263 - Добавление авторизации
264 - Защита действий с постами
265 - Почему редактирование не работает
266 - Завершение модуля
18. Валидация данных
267 - Введение в модуль
268 - Зачем нужна валидация
269 - Как проверять ввод данных
270 - Настройка и базовая валидация
271 - Использование сообщений об ошибках
272 - Встроенные и кастомные валидаторы
273 - Дополнительные валидаторы
274 - Проверка на совпадение полей
275 - Добавление асинхронной валидации
276 - Проблема с валидацией
277 - Решение проблемы валидации
278 - Сохранение введённых пользователем данных
279 - Добавление условных CSS-классов
280 - Добавление валидации для входа
281 - Санитизация данных
282 - Валидация добавления товара
283 - Валидация редактирования товара
284 - Завершение модуля
285 - Введение в модуль
286 - Типы ошибок и методы обработки
287 - Анализ обработки ошибок в текущем проекте
288 - Теория об ошибках
289 - Генерация ошибок в коде
290 - Возврат страниц с ошибками
291 - Использование middleware для обработки ошибок в Express.js
292 - Обновление приложения
293 - Правильное использование middleware для обработки ошибок
294 - Коды состояния HTTP
295 - Завершение модуля
19. Загрузка и скачивание файлов
296 - Введение в модуль
297 - Добавление файлового менеджера во фронтенд
298 - Обработка multipart_form-data
299 - Загрузка файлов с помощью Multer
300 - Настройка Multer для изменения имени файла и пути
301 - Фильтрация файлов по MIME-типу
302 - Сохранение данных файла в базе данных
303 - Статическая раздача изображений
304 - Скачивание файлов с аутентификацией
305 - Установка заголовков типа файла
306 - Ограничение доступа к файлам
307 - Потоковая передача vs предзагрузка данных
308 - Использование PDFKit для генерации .pdf
309 - Генерация PDF-файлов с данными заказа
310 - Удаление файлов
311 - Исправление ссылок на счета
312 - Завершение модуля
20. Пагинация
313 - Введение в модуль
314 - Добавление навигационных ссылок
315 - Получение части данных
316 - Подготовка данных пагинации на сервере
317 - Добавление динамических кнопок навигации
318 - Повторное использование логики пагинации и элементов управления
319 - Завершение модуля
21. Асинхронные запросы
320 - Введение в модуль
321 - Что такое асинхронные запросы
322 - Добавление клиентского JS-кода
323 - Отправка и обработка фоновых запросов
324 - Манипуляции с DOM
22. Интеграция платежей
325 - Введение в модуль
326 - Принципы работы платежных систем
327 - Создание страницы оформления заказа
328 - Использование Stripe в приложении
23. REST API - Основы
329 - Введение в модуль
330 - Что такое REST API и зачем они нужны
331 - Доступ к данным через REST API
332 - Маршрутизация и HTTP-методы
333 - Ключевые принципы REST API
334 - Создание проекта REST API и настройка маршрутов
335 - Отправка запросов и ответов, работа с Postman
336 - Клиенты и CORS-ошибки
337 - Отправка POST-запросов
338 - Завершение модуля
24. Практическое REST API
339 - Введение в модуль
340 - REST API и дальнейшее обучение
341 - Настройка фронтенда
342 - Планирование API
343 - Получение списка публикаций
344 - Создание эндпоинта для публикаций
345 - Валидация на стороне сервера
346 - Создание модели публикации
347 - Сохранение публикаций в БД
348 - Статические изображения и обработка ошибок
349 - Получение отдельной публикации
350 - Загрузка изображений
351 - Обновление публикаций
352 - Удаление публикаций
353 - Реализация пагинации
354 - Создание модели пользователя
355 - Валидация регистрации
356 - Регистрация пользователей
357 - Принципы аутентификации
358 - Начало работы с авторизацией
359 - Вход и создание JWT-токенов
360 - Использование и проверка токенов
361 - Добавление middleware аутентификации
362 - Связь публикаций и пользователей
363 - Проверки авторизации
364 - Очистка связей публикаций и пользователей
365 - Работа с REST API (Проблема)
366 - Работа с REST API (Решение)
367 - Завершение модуля
25. Async, Await в Node.js
368 - Введение в модуль
369 - Основы Async, Await
370 - Замена Then, Catch на Async, Await
371 - Top-Level Await
372 - Задача
373 - Решение
374 - Завершение модуля
26. WebSockets и Socket.io
375 - Введение в модуль
376 - Что такое WebSockets и зачем они нужны
377 - Обзор решений на WebSockets
378 - Настройка Socket.io на сервере
379 - Установка соединения с клиента
380 - Определение возможностей realtime-взаимодействия
381 - Совместное использование экземпляра IO между файлами
382 - Синхронизация добавления POST-запросов
383 - Исправление ошибки* отсутствующее имя пользователя
384 - Обновление публикаций на всех подключенных клиентах
385 - Правильная сортировка
386 - Deleting Posts Across Clients
387 - Завершение модуля
27. GraphQL
388 - Введение в модуль
389 - Что такое GraphQL
390 - Настройка окружения и первый запрос
391 - Определение схемы мутации
392 - Добавление резолвера мутации
393 - Валидация входных данных
394 - Обработка ошибок
395 - Подключение фронтенда к GraphQL API
396 - Добавление запроса авторизации и резолвера
397 - Добавление функции входа
398 - Добавление мутации Create Post
399 - Извлечение данных пользователя из токена аутентификации
400 - Отправка запроса Create Post
401 - Исправление ошибки и корректное добавление публикаций
402 - Добавление запроса и резолвера для получения публикации
403 - Отправка запросов на создание и получение публикаций
404 - Реализация пагинации
405 - Загрузка изображений
406 - Просмотр отдельной публикации
407 - Обновление публикаций
408 - Удаление публикаций
409 - Управление статусом пользователя
410 - Использование переменных
411 - Исправление ошибки пагинации
412 - Завершение модуля
28. Деплой приложения
413 - Введение в модуль
414 - Развертывание разных типов приложений
415 - Подготовка к деплою
416 - Использование переменных окружения
417 - Использование продакшен API-ключей
418 - Настройка безопасных заголовков ответов с Helmet
419 - Сжатие ресурсов
420 - Настройка логгирования запросов
421 - Настройка SSL-сервера
422 - Использование хостинг-провайдера
423 - Обзор проекта и настройка Git
424 - Пример деплоя на Heroku
425 - Развертывание API
29. Тестирование приложений
426 - Введение в модуль
427 - Что такое тестирование
428 - Зачем и как тестировать
429 - Настройка и написание первого теста
430 - Тестирование middleware аутентификации
431 - Организация множества тестов
432 - Что не нужно тестировать!
433 - Использование заглушек (stubs)
434 - Тестирование контроллеров
435 - Тестирование асинхронного кода
436 - Настройка тестовой базы данных
437 - Тестирование кода с активной БД
438 - Очистка после тестов
439 - Хуки (Hooks)
440 - Тестирование кода с аутентификацией
441 - Итоги и мастерство тестирования
30. Node.js как инструмент сборки
442 - Введение в модуль
443 - npm и Node.js
444 - Использование npm
445 - Что такое инструмент сборки
446 - Использование Node.js в процессах сборки
31. Современный JavaScript и Node.js
447 - Введение в модуль
448 - О чем этот модуль
449 - Работа с ES-модулями в Node.js
450 - Подробнее об ES-модулях
451 - Встроенные модули Node.js и Promises
32. Node.js и TypeScript
452 - Введение в модуль
453 - TypeScript - что это и зачем нужно
454 - Настройка TypeScript
455 - Назначение типов
456 - Вывод типов и приведение типов
457 - Конфигурация TypeScript
458 - Работа с объединёнными типами (Union Types)
459 - Использование типов объектов и массивов
460 - Псевдонимы типов и интерфейсы
461 - Дженерики (Generics)
462 - Первые итоги
463 - Настройка Node.js и TypeScript
464 - Начало работы с Node.js и TypeScript
465 - Написание Express.js кода на TypeScript
466 - Добавление REST-маршрутов с TypeScript
467 - Завершение REST-маршрутов
468 - Тестирование API
469 - Использование приведения типов
470 - Переход к улучшенной структуре проекта
471 - Завершение модуля
33. Знакомство с Deno
472 - Введение в модуль
473 - Что такое Deno
474 - Преимущества Deno
475 - Настройка Deno
476 - Первый код на Deno
477 - Runtime API Deno (пространство имен)
478 - Использование Runtime API
479 - Работа с системой разрешений Deno
480 - Повторение примера на Node.js
481 - Организация возможностей Deno
482 - Использование стандартной библиотеки
483 - Создание веб-сервера
484 - Использование фреймворка Oak с Deno
485 - Пример REST API на Node.js
486 - Пересборка REST API на Deno
487 - Стоит ли переходить с Node.js на Deno
34. Deno, CRUD и БД (MongoDB)
488 - Введение в модуль
489 - Настройка приложения
490 - Обработка CORS ошибок
491 - Подключение Deno к MongoDB
492 - Использование модуля MongoDB Client
493 - Завершение CRUD операций в Deno с MongoDB
494 - Итоги модуля
35. Завершение курса