Рубрики
Без рубрики

Создание модульной приложения KOA

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

Автор оригинала: 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, и сделать их модулярным возможным, после того, как у вас уже установлен маршрут. Дайте мне знать, что вы думаете и какой пакет маршрутизации вы используете для ваших проектов. Любые предложения и идеи, пожалуйста, оставьте комментарий ниже. Надеюсь, вы узнаете что-то новое, как я.