Я много слышал о 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… Может, посмотрим в другой истории.
Мне понравились мои первые шаги с коа… спасибо за чтение.