Node.js #11 Node.js & Express (Node.js & Express)

แชร์
ฝัง
  • เผยแพร่เมื่อ 11 ส.ค. 2021
  • #YauhenK #webdev #Node #Express
    Всех приветствую в курсе «Node.js».
    В данном видеокурсе мы с вами рассмотрим Node.js, серверную технологию которая позволяет исполнять код написанный на JavaScript вне браузера. Разберём базовые концепции и встроенные модули, которые активно используются при разработке сервера. Рассмотрим механизм коммуникаций между сервером и браузером. Создадим базовый роутинг на чистом Node.js. Подключем Express и перепишем роутер. Научимся работать с динамичными данными с помощью шаблонизатора Node.js. Напишем новостное приложение с поддержкой CRUD операций и хранением данных в MongoDB. Создадим свой API по возврату данных из БД. И в заключение, загрузим готовое приложение на Heroku.
    ✒ Репозиторий курса:
    ✔ GitHub: github.com/YauhenKavalchuk/no...
    ✒ Полный список готовых и планируемых курсов:
    ✔ Trello: trello.com/b/R6rD7qq8
    ✒ Автор курса:
    ✔ TH-cam: / yauhenkavalchuk
    ✔ Instagram: / yauhenkavalchuk
    ✔ Twitter: / yauhenkavalchuk
    ✔ VK: YauhenKavalchuk
    ✔ LinkedIn: / yauhenkavalchuk
    ✔ GitHub: github.com/YauhenKavalchuk
    ✔ VK (Группа): webdevcom
    ✒ Поддержать развитие канала: github.com/YauhenKavalchuk/yo...

ความคิดเห็น • 76

  • @froggiii1
    @froggiii1 หลายเดือนก่อน

    Спасибо большое за вашу работу! очень доходчиво и наглядно доносится материал 🙏

  • @frekbysib
    @frekbysib ปีที่แล้ว

    Лайк и коммент в поддержку! Очень хорошая подача информации!

  • @dimalukashenko4865
    @dimalukashenko4865 2 ปีที่แล้ว +1

    Очень хороший урок!

  • @-Forever-Young-
    @-Forever-Young- ปีที่แล้ว

    спасибо за труд!) очень помогаешь

  • @alexdenuke
    @alexdenuke ปีที่แล้ว

    Максимально понятно. Спасибо

  • @andygr1n1
    @andygr1n1 2 ปีที่แล้ว

    Спасибо за материал, у Express на момент написания сообщения 16,807,903 скачиваний в неделю.
    Для разработки небольших проектов, всегда выбираю его, ни разу не имел проблем на production в связи с выбором express.

    • @YauhenKavalchuk
      @YauhenKavalchuk  2 ปีที่แล้ว +3

      Да, я тоже удивился когда о express начали негативно отзываться

  • @kirasukadura
    @kirasukadura 2 ปีที่แล้ว +1

    Что бы подгружались css файлы нужно ещё добавить:
    app.use(express.static('your folder'))
    перед отправкой html с сервера!

    • @YauhenKavalchuk
      @YauhenKavalchuk  2 ปีที่แล้ว

      Я об этом рассказал в теме мидлваров

  • @digitalturkistan1857
    @digitalturkistan1857 2 ปีที่แล้ว +1

    С перва лайк

  • @oleksandrfilippov219
    @oleksandrfilippov219 2 ปีที่แล้ว

    Очень классный курс, начал сегодня с первого видео и не могу остановиться :)
    Скажите пожалуйста, какое у Вас расширение стоит для VSCode, в ситуации когда вы пишите app.get("/", на этом моменте оно само вам предлагает вставить стрелочную функцию с req, res.
    Спасибо за ответ :)

  • @user-ol3bu4pr7m
    @user-ol3bu4pr7m 2 ปีที่แล้ว

    Евгений, подскажите пожалуйста, при использовании Express и при роуте на существующие страницы не нужно возвращять 200 через status(200)? Спасибо.

    • @YauhenKavalchuk
      @YauhenKavalchuk  2 ปีที่แล้ว

      Да, можно не возвращать. Но обычно этот статус говорит о том, что всё корректно отработало

  • @julia_samuilik
    @julia_samuilik 2 ปีที่แล้ว +1

    Спасибо за классный урок!
    Вопрос: если нужно отдавать одну и ту же страницу (например index.html) для разных урлов (например '/home', 'index.html' и '/', как это с express лучше сделать?

    • @YauhenKavalchuk
      @YauhenKavalchuk  2 ปีที่แล้ว

      Скорее всего редирект, или отдельные запросы на каждый путь

    • @rslazamat
      @rslazamat 2 ปีที่แล้ว +5

      Можно взять добавить все пути в массив. Вот так например: [‘/’, ’index.html’, ’/home’]

  • @user-hs8ef8jq5c
    @user-hs8ef8jq5c 4 หลายเดือนก่อน

    Как все же правильно для SEO указывать имя файлов для рендера: index (без html) или index.html (полностью)? Так app.get('/index', (req, res) => ...) или так app.get('/index.html', (req, res) => ... )? От этого зависит вид гиперссылки во фронте: или . Какие мнения существуют по этому вопросу?

  • @user-zv6gp9vc8f
    @user-zv6gp9vc8f ปีที่แล้ว +2

    Кажется теперь порядок роутов не имеет значения... Работает и так и так)))

    • @YauhenKavalchuk
      @YauhenKavalchuk  ปีที่แล้ว

      🤔 интересно…

    • @timchenkov
      @timchenkov ปีที่แล้ว

      Точніше, не працює ні так, ні так) res.redirect('/') завжди повертає 404 :(

  • @user-hs8ef8jq5c
    @user-hs8ef8jq5c 4 หลายเดือนก่อน

    Спасибо за видео. Если подключать express через import (синтаксис ES), то глобальный объект __dirname больше не работает. Пишет "__dirname is not defined". Решил проблему явным указанием пути к рут: path.resolve('./', 'views'...). С подключением express через require работает __dirname (как на Ваших видео). Можете прокомментировать, какой синтаксис все же использовать, современный ECMA6 или ранний с require?

    • @YauhenKavalchuk
      @YauhenKavalchuk  4 หลายเดือนก่อน +1

      Лучше использовать современный

  • @elconrel9665
    @elconrel9665 ปีที่แล้ว

    Извиняюсь за глупый вопрос, так как я новичок но какое отличие между роутингом через экспресс и реакт роутер дом в самом реакте ?

    • @YauhenKavalchuk
      @YauhenKavalchuk  ปีที่แล้ว +2

      Это 2 абсолютно разных подхода - различий масса. Но самое основное, express - это серверный роутинг, react-router - это роутинг на стороне клиента

    • @elconrel9665
      @elconrel9665 ปีที่แล้ว

      @@YauhenKavalchuk спасибо

  • @TimurShemsedinov
    @TimurShemsedinov 2 ปีที่แล้ว +17

    А еще, express формирует сознание говнокодеров

    • @ApelsinovIvan
      @ApelsinovIvan 2 ปีที่แล้ว +3

      А можно объяснить?

    • @YauhenKavalchuk
      @YauhenKavalchuk  2 ปีที่แล้ว

      Если не дадите обоснованного ответа «почему», то комментарий буде удалён

    • @digitalturkistan1857
      @digitalturkistan1857 2 ปีที่แล้ว +1

      Тимур добрый день почему так

    • @yurabobrov6717
      @yurabobrov6717 2 ปีที่แล้ว +3

      Это же очевидно. Новички не знают как создавать правильную архитектуру проекта, а экспресс и не предлагает этого. Дальше будет невероятное использование мидлваров, в которые накидают всего чего стоило и не нет и будут тягать эти данные между всеми запросами.

    • @TimurShemsedinov
      @TimurShemsedinov 2 ปีที่แล้ว +11

      1. Экспресс использует паттерн middleware, а если мы поднимем шаблоны проектирования "Банды четырех", то найдем там шаблон "Цепочка обязанностей" (Chain of Responsibility) и внезапно заметим, что middleware это сломанная реализация этого шаблона. Дело в том, что ответственность должна не размываться, а концентрироваться, "Цепочка обязанностей" подразумевает, что только одно звено в цепи берет на себя ответственность за обработку запроса, если звено не берет ответственность, то передает управление следующему звену, ничего не делая. А в милдварах каждый мидлвар может модифицировать состояние и запроса и ответа, что приводит к протекающим абстракциям (leaking abstractions) и состояниям гонки (race conditions, data race).

  • @tymurkr
    @tymurkr 10 หลายเดือนก่อน

    А что, если нам нужно возвращать файл с базы данных по id в запросе, или возвращать страницу в зависимости от тега языка в начале запроса а также проверять куки и т.д.

    • @YauhenKavalchuk
      @YauhenKavalchuk  10 หลายเดือนก่อน

      Для работы с БД на канале есть отдельный курс по MongoDB

    • @tymurkr
      @tymurkr 10 หลายเดือนก่อน

      @@YauhenKavalchuk не, про БД я уже увидел в следующих видео (через /:id) а вот про то, что в начале запроса, например /en/home и /home возвращает английский файл, а /ru/home русский, но чтобы мы могли вынести язык в отдельную переменную для подальшей работы с ней.

  • @rakhymbeksagyn2835
    @rakhymbeksagyn2835 2 ปีที่แล้ว

    А почему у меня на 6:38 при redirect всё таки перекидывает на contacts?
    Т.е. у меня при введении "about-us" выходит страница "contacts" , и в панельке статус у "about-us" :
    Status code: 301 Moved Permanently (from disk cache);
    Хотя порядок такой же?

    • @YauhenKavalchuk
      @YauhenKavalchuk  2 ปีที่แล้ว

      В описании есть ссылка на репозиторий, можете сравнить)

    • @rakhymbeksagyn2835
      @rakhymbeksagyn2835 2 ปีที่แล้ว

      @@YauhenKavalchuk да, сравнил , но там же конечный код, а я именно вот эту ошибку хотел увидеть с about-us.

    • @user-cr5sy7my9m
      @user-cr5sy7my9m ปีที่แล้ว +1

      Status code: 301 кэшируется браузером. Очистите кэш.

  • @bratik026
    @bratik026 2 ปีที่แล้ว

    А как прописывать путь, например в ?

    • @YauhenKavalchuk
      @YauhenKavalchuk  2 ปีที่แล้ว +1

      В следующих видео об этом рассказывается, в контексте использования шаблонизатора

  • @digitalturkistan1857
    @digitalturkistan1857 2 ปีที่แล้ว

    Евгений курс для начинающих или полноценный курс

  • @borismakhmudov896
    @borismakhmudov896 2 ปีที่แล้ว

    А сколько уроков будет всего?

  • @gimtonic
    @gimtonic 2 ปีที่แล้ว

    node да и ещё и на js(не на ts) это уже даже не прошлый век а позапрошлый)))
    сам создатель ноды учёл все косяки в новом продукте.