Как организовать маршруты в приложении Nodejs Express - PullRequest
2 голосов
/ 10 января 2020

Я работаю над приложением Nodejs / Express. Я использовал генератор express для создания базовой структуры c. На данный момент указать все маршруты в приложении. js файл

var indexRouter = require('./routes/index');
var router1Router = require('./routes/router1');
var router2Router = require('./routes/router2');
......
app.use('/', indexRouter);
app.use('/router1', router1Router);
app.use('/router2', router2Router);

Все работает, как ожидалось. Однако я натолкнулся на предложение иметь в папке root приложения маршруты. js и

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

Однако мне трудно понять, как правильно его настроить. Любые предложения будут очень оценены. Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 10 января 2020

Несколько способов достичь этого. Это то, что я считаю удобным. Вы можете иметь папку для маршрутов, и там вы можете иметь индекс. js и файлы для других маршрутов, которые вам нужны. Пример: Файл: src / route / index. js

const express = require('express');
const contactusRoutes = require('./contactus.routes');

const apiRouter = express.Router();

apiRouter.use('/contactus', contactusRoutes);

module.exports = apiRouter;

Файл: / src / routs / contactus.routes. js

const express = require('express');

const contactusRoutes = express.Router();

const contactusController = require('../controllers/contactus.controller');

contactusRoutes.post('/', errorHandler.wrapAsync(contactusController.someFunctionName));

module.exports = contactusRoutes;

у вас может быть больше таких файлов.

Файл: server.js / app. js

добавьте их в server.js /app.js

const apiRoutes = require('./src/routes/index');

server.use('/api', apiRoutes);

Спасибо!

2 голосов
/ 10 января 2020

Рекомендуется, чтобы основной файл был коротким и простым.

Я помещаю все свои маршруты в папку маршрутов.

    |-- app.js
    |-- routes
    |   |-- index.js
    |   |-- router1.js
    |   |-- router2.js
    |-- startup
    |   |-- routes.js

В запуске / маршрутах. js файл Я импортирую все маршруты, как это:

const express = require("express");
var indexRouter = require("../routes/index");
var router1Router = require("../routes/router1");
var router2Router = require("../routes/router2");

module.exports = function(app) {
  app.use(express.json());

  app.use("/", indexRouter);
  app.use("/router1", router1Router);
  app.use("/router2", router2Router);
};

И приложение. js Я только импортирую запуск / маршруты. js вот так:

const express = require("express");
const app = express();

require("./startup/routes")(app);

const port = process.env.PORT || 3000;

app.listen(port, () => console.log(`Listening on port ${port}...`));

Таким образом , когда мы хотим добавить еще один маршрут к нашему приложению, мы добавляем его в автозагрузку / маршруты. js без необходимости вносить изменения в файл приложения. js, в котором наше приложение остается чистым и коротким. js .

Вы также можете добавить другие файлы (например, соединение с базой данных) в папку автозагрузки позже, когда потребуется, и импортировать их в приложение. js.

2 голосов
/ 10 января 2020

Мне нравится организовывать это, имея папку routes в моем каталоге root.

Таким образом, папка будет расположена в: [name of your project]/routes/.

В папке routes у меня есть файл router.js. Вы можете называть этот файл как хотите. Что-то значимое. Как router или routes.

Итак, ваша структура папок router будет выглядеть примерно так: [name of your project]/routes/router.js.

В моем файле router.js есть следующее объявление:

Это просто пример

const express = require('express');
const router = express.Router();
const api = require(../api);

/* GET environments */
router.get('/environments', (req, res) =>
{
    res.json({ environments: api.getSortedEnvironments() });
});

... 

module.exports = router;

Основными частями в приведенном выше коде являются объявления express и router вверху и часть module.exports внизу.

Затем в моем файле app.js есть следующий код:

//at the top
const router = require('./routes/router');

, и я использую его следующим образом:

app.use('/', router);

Это означает, что любые конечные точки, к которым ваши пользователи пытаются получить доступ, будут автоматически перенаправлены / обработаны объявленным вами «маршрутизатором».

Сохраняет ваш файл app.js в хорошем состоянии.

Ваша полная структура папок должна выглядеть следующим образом:

MyAmazingProject
|-- ...
|-- routes
|   `-- router.js
|-- ...
`-- app.js
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...