Я много слышал о koa.js — теперь пришло время попробовать. Итак, давайте просто создадим YAHW: еще один привет, мир ;-)

В дополнение к простому варианту использования «hello world» мы также добавим простую маршрутизацию.

Предварительные требования и установка

Все, что вам нужно, это фактический узел в вашей системе. Koa требует node v7.6.0 или выше… просто проверьте: node - -version

Теперь давайте начнем с новой и пустой папки, чтобы быстро создать наше первое приложение koa.js.

$ npm init
$ npm install koa --save

Теперь создайте новый файл с именем: app.js и отредактируйте его следующим образом.

const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
 ctx.body = 'Hello World';
});
app.listen(3000);

Если вы знакомы с другими веб-фреймворками Node, эти несколько строк кода должны быть вам понятны:

  • потребовать koa и инициализировать приложение
  • создать обработчик URL по умолчанию с «hello world»
  • слушать порт

Вы можете запустить это через: node app.js

Указав в браузере: localhost:3000, появится ваш первый Hello world с коа — поздравляю ;-)

Маршрутизация

Чтобы расширить наш hello world, давайте добавим простую маршрутизацию. Мы будем использовать модуль koa-router: https://www.npmjs.com/package/koa-router

С koa у вас есть большая гибкость в том, как создавать свое приложение и какие инструменты использовать — даже маршрутизация не является частью основного пакета. Другими вариантами «koa-router» могут быть, например. здесь:

npm install @koa/router --save

Теперь мы можем использовать этот модуль, чтобы добавить маршрутизацию в наше приложение:

const Koa    = require('koa');
const Router = require('@koa/router');
const app    = new Koa();
const router = new Router();
router.get(`/hello`, async ctx => {
    ctx.body = 'Hello World';
});
app.use(router.routes());
app.listen(3000);

Давайте посмотрим на интересные части этого нового фрагмента кода:

router.get(`/hello`, async ctx => {
    ctx.body = 'Hello World';
});

Вы можете просто добавить несколько новых маршрутов на маршрутизатор через свободный API: .get или .post с последующей функцией обратного вызова, которая получит объект ctx в качестве аргумента. Более подробную информацию можно найти в официальной документации: https://github.com/koajs/router/blob/master/API.md#routergetputpostpatchdeletedel--router

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

В конце не забудьте прописать маршруты к коа через:

app.use(router.routes());

Теперь перезапустите приложение и попробуйте: http://localhost:3000/hello.

Вы должны увидеть то же сообщение «hello world», что и раньше… но с учетом маршрутизации.

Что дальше

В конце моего короткого ознакомления с коа кажется, что начать с фреймворка несложно… Если вы знаете экспресс или хапи, многие вещи будут вам знакомы — даже коа будет обрабатывать некоторые более или менее детали по-разному…

Что с ктх? А где мой объект req/res… Может, посмотрим в другой истории.

Мне понравились мои первые шаги с коа… спасибо за чтение.