Автор оригинала: LAU TIAM KOK.
Вступление
Коа вполне новый в узловой рамочной сцене. Если вы когда-либо работали на Экспресс И устал от обратного вызова ада, когда приложение станет больше, вы будете любить KOA. Разработано тем же парнями за экспресс. Одна из прохладных вещей в коа является Каскадирование – Add Add Add Add будет работать «вниз по течению», затем вытекает назад «вверх по течению», и это дает вам более предсказуемые элементы управления.
Проблема
KOA очень минимально и гибкий. Однако, в отличие от экспресса, который поставляется с прочным маршрутизатором, KOA по умолчанию не имеет одного. Это главная проблема, работающая с KOA, поскольку вам нужно выбрать сторонний пакет или выбрать одну из пакетов, перечисленных под тем, чтобы Github Отказ Вы можете проверить несколько и выяснить, что они не работают так, как вы хотите. Это также вызывает беспокойство, поскольку ему не хватает стандарта. Вероятно, это цена за быть минималистичным.
После нескольких часов борется, я наконец-то сократился, чтобы объединить эти две пакеты, которые будут работать практически похожи на Express’s – KOA-Mount и KOA-TRIE-RUTER Отказ
Начиная
Для того, как начать с KOA, есть много учебных пособий, доступных там (даже если многие из них были основаны на версии до KOA 2). Цель этой статьи – показать вам, как вы можете отделить маршруты приложений для создания модульной структуры каталогов для вашего приложения, для примера:
------------- modules/ home/ controllers/ models/ views/ blog/ controllers/ models/ views/ news/ controllers/ models/ views/ -------------
Это каталоги и файлы, которые у меня есть в моем Пользователь
модуль:
------------- _routes/ delete-user.js fetch-user.js index.js insert-user.js update-user.js controllers/ delete-user.js fetch-user.js index.js insert-user.js update-user.js models/ schemas.js user.js index.js <-- the user main route -------------
Внутри главных index.js
в Пользователь
Модуль, я называю экземпляром KOA-TRIE-RUTER
и импортировать все маршруты, которые принадлежат Пользователь
:
'use strict' import Router from 'koa-trie-router' import fetchUsers from './_routes' import fetchUser from './_routes/fetch-user' import insertUser from './_routes/insert-user' import updateUser from './_routes/update-user' import deleleUser from './_routes/delete-user' const router = new Router() export default () => { router.get(fetchUsers()) router.get(fetchUser()) router.post(insertUser()) router.put(updateUser()) router.del(deleleUser()) return router.middleware() }
А потом в Применяющий маршрут Я импортирую Пользователь
Главный маршрут В файле под названием Routers.js
Наряду с другими основными маршрутами из других модулей:
//routers.js 'use strict' import Router from 'koa-trie-router' import mount from 'koa-mount' // Import routes from different modules. import home from 'default/home' import user from 'default/user' const router = new Router() export default () => { // Add Routes. router.use(mount('/', home())) router.use(mount('/users', user())) return router.middleware() }
Наконец, я импортирую это Routers.js
Как промежуточное программное обеспечение в Middlewares.js
:
// middlewares.js import mount from 'koa-mount' import routes from './routes' ... ... ... app.use(mount('/api', routes()))
Вы можете клонировать или загрузить этот базовый модульный пример из GitHub Репозиторий Отказ
Используя приложение
Чтобы использовать это приложение, во-первых, вам нужно иметь Монго Уже Установлен в твоей машине.
Если у вас есть Mongo Ready, то установите узел пакеты:
$ npm install
Подавать приложение в Localhost: 3000 (для разработки):
$ npm run dev
Или (для производства):
$ npm start
Тестировать:
$ npm run test
После этого вы можете получить доступ к этим HTTP-методам ниже:
1. метод получения
Когда вы посещаете приложение в http://127.0.0.1:3000
, ты получаешь:
{"status":404,"message":"Not Found"}
Это потому, что нет модуля для этого маршрута /
Начнутся основной маршрут приложения на API/
:
app.use(mount('/api', routes()))
Так что, если вы посетите его в http://127.0.0.1:3000/api
, ты получаешь:
{"status":200,"data":{"message":"Hello World!"}}
Навестить Пользователь
Индекс страницы, используйте http://127.0.0.1:3000/api/users
Тогда вы получаете:
{"status":200,"data":[]}
Обратите внимание, что данные пусты – «Данные»: []
Это потому, что пользователь не добавлен в Пользователь
Коллекция в базе данных еще.
2. Метод пост
Теперь, если вы отправитесь в Google Postman, создайте ключ ниже и введите значение в Тело
раздел:
Key Value -------------------- name rob
Выберите Пост
метод и ударить Отправить
Кнопка, вы получаете:
{ "status": 200, "data": { "result": { "ok": 1, "n": 1 }, "ops": [ { "uuid": "ede050e0-9b1c-11e7-a766-4f8befaf2db7", "name": "rob", "_id": "59bd884d64fa675e298079e0" } ], "insertedCount": 1, "insertedIds": [ "59bd884d64fa675e298079e0" ] } }
Когда вы посетите http://127.0.0.1:3000/api/users
Опять же, вы получаете:
{"status":200,"data":[{"_id":"59bd884d64fa675e298079e0","uuid":"ede050e0-9b1c-11e7-a766-4f8befaf2db7","name":"rob"}]}
Вы можете добавить больше пользователей в и когда вы просто хотите запрашивать один пользователь, например, http://127.0.0.1:3000/api/users/rob
, ты получаешь:
{"status":200,"data":{"_id":"59bd884d64fa675e298079e0","uuid":"ede050e0-9b1c-11e7-a766-4f8befaf2db7","name":"rob"}}
3. Метод положения
Чтобы обновить этот пользователь, просто добавьте _id
Ключ к Postman:
Key Value -------------------- name robbie _id 59bd884d64fa675e298079e0
Когда вы ударили Отправить
Кнопка с Поставить
Метод, вы получаете:
{ "status": 200, "data": { "lastErrorObject": { "updatedExisting": true, "n": 1 }, "value": { "_id": "59bd884d64fa675e298079e0", "uuid": "ede050e0-9b1c-11e7-a766-4f8befaf2db7", "name": "robbie" }, "ok": 1 } }
4. Удалить метод
Наконец, чтобы удалить этот пользователь, вам просто нужно предоставить _id
Ключ в Почтене:
Key Value -------------------- _id 59bd884d64fa675e298079e0
Когда вы ударили Отправить
Кнопка с Удалить
Метод, это результаты:
{ "status": 200, "data": { "ok": 1, "n": 1 } }
Заключение
Как видите, это довольно ветер для разработки приложений с KOA, и сделать их модулярным возможным, после того, как у вас уже установлен маршрут. Дайте мне знать, что вы думаете и какой пакет маршрутизации вы используете для ваших проектов. Любые предложения и идеи, пожалуйста, оставьте комментарий ниже. Надеюсь, вы узнаете что-то новое, как я.