Node-Center
Menu
  • Главная
  • Документация
    • Пакеты и модули
    • Туториалы
  • Технология
    • Полезные ссылки
    • Инструменты
    • Статьи
    • Статьи по смежным темам
  • Сообщество
    • События
  • О сайте
Menu

Знакомство с Koa

Posted on 27.06.201618.02.2020 by node-center

Источник: https://habrahabr.ru/post/238095/

Собственно, Koa во многом похож на предшественника — Express, за исключением вездесущих callback`ов. Вместо них он использует сопрограммы, в которых управление может быть передано подпрограммам(thunk), обещаниям(promise), массиву с подпрограммами\соообещаниями, либо объекту. В некоторых местах даже сохранена некоторая обратная совместимость через группу функций co, написанных создателями Koa и многими последователями. Любая функция, которая раньше использовала callback, может быть thunkify`цирована для использования с co или Koa.

Выглядит это так:

При этом в result вернется data, а done(err) вызовет исключение, и функцию вы не покидаете, как это было бы с callback`ом, и интерпретатор не блокируете, выполнение переходит к следующему yield`у, и выглядит это изящно, другими словами — просто сказка.

Время писать код

Koa основан на middleware`ях, также как Express, но теперь они выполняются как сопрограмма, подобно Tornado в Python. Дальше пойдет код простого сайта и мои мысли. Структура проекта:

  • node_modules
  • src — Здесь весь исходный код
  • server — Сервер
  • app — Папка с приложениями
  • public — Статика
  • template — Шаблоны
  • config — Файлы конфигурации

Так как предыдущим моим увлечением был Django, кому-то может показаться, что это сказалось на организацию кода в проекте. Возможно это правда, мне действительно нравится организовывать код в модули.

Заключение

На сладкое решил оставить обработку ошибок. От адептов Node.js и Express слышал, что это требует особой внимательности к каждому callback`у, и даже она не всегда помогает. Если вспомнить порядок выполнения middleware, глобальную обработку можно осуществить, просто добавив следующий код в начало обработки запроса:

Этим мы заключаем весь код проекта в try..catch, ну и не забывайте, что app — это прежде всего eventEmitter. По-моему, это просто гениально. Модулей для Koa уже написано великое множество, почти каждый модуль для Express уже адаптирован для Koa, такие как Mongoose, Passport, request и многие другие. Так мы получили асинхронное программирование, которое приносит радость и фан. К тому же, небезызвестный TJ Holowaychuk остаётся поддерживать Koa.

Спасибо, что читали. Всего хорошего, всем Node.js.

Почта

node.center.ru@gmail.com

Свежие записи

  • Валюта дороже золота
  • 3 Основные характеристики блокчейна
  • Выбор платформы для торговли криптовалютой
  • Особенности игры Minecraft 
  • Кейсы в CS:GO
  • Maker криптовалюта
  • Как получить лучшие КС ГО кейсы
  • Как скачать игру need for speed underground 2
  • Как получить прибыль в ставках на спорт

Меню

  • Главная
  • Документация
    • Пакеты и модули
    • Туториалы
  • Технология
    • Полезные ссылки
    • Инструменты
    • Статьи
    • Статьи по смежным темам
  • Сообщество
    • События
  • О сайте

Свежие записи

  • Валюта дороже золота
  • 3 Основные характеристики блокчейна
  • Выбор платформы для торговли криптовалютой
  • Особенности игры Minecraft 
  • Кейсы в CS:GO
  • Maker криптовалюта
  • Как получить лучшие КС ГО кейсы
  • Как скачать игру need for speed underground 2
  • Как получить прибыль в ставках на спорт
  • Civilization 5 brave new world системные требования

Почта

node.center.ru@gmail.com

© 2022 Node-Center