Зачем нужен module.exports = router? - PullRequest
0 голосов
/ 10 мая 2019

В моем файле conf сервера node.js я установил app.use('/user', user.js), который отображает маршрут /user в файл user.js.

Затем я создаю подпрограмму в моем файле user.js для обработки моегополучить или отправить запросы.

Мой вопрос: какова ответственность module.exports=router в конце этого файла?

Если я удалю его, маршрутизация перестанет работать, поэтому я не понимаюесли он здесь, чтобы сообщить моему файлу conf сервера, что в 1011 *?

var express = require('express');

var user = require('../../models/user');
var db = require('../../models/index');


var router = express.Router();


router.get('/addUser',function (req, res, next) {
  db.user.create(req.body)
    .then(user => res.json({

      data: user,

    }))
    .catch(error => res.json({
      error: true,
      data: [],
      error: error
  }));
});
module.exports = router;
есть подпуть

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

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

const app = express()
app.listen(port) 

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

В module.export, module - это переменная, представляющая текущий модуль, а export - это объект.Все, что вы назначите для module.exports, будет выставлено как модуль.

скопировано: Модуль в Node.js представляет собой простую или сложную функциональность, организованную в виде одного или нескольких файлов JavaScript, которые можно повторно использовать в приложении Node.js.

Один развы делаете module.export = Router Теперь у вас есть недавно созданный модуль.В nodeJs вы должны требовать модуль перед его использованием.const user = require('./user.js') сделает этот процесс.Как только вам потребуется модуль узла в вашем приложении, вы должны указать ему, чтобы он выполнялся с помощью app.use('/' , user)

Или вы можете сделать что-то подобное ниже

для вашего пользователяфайл .js,

var user = require('../../models/user');
var db = require('../../models/index');

module.export = (app) =>{
  app.get('/addUser',function (req, res, next) {
  db.user.create(req.body)
    .then(user => res.json({

      data: user,

    }))
    .catch(error => res.json({
      error: true,
      data: [],
      error: error
  }));
 });
}

в вашем основном index.js,

const app = express()
require('./user.js')(app)
0 голосов
/ 10 мая 2019

Когда вы делаете

var user = require('../../models/user');

, объект user получает все, что экспортируется из модуля в user.js.Таким образом, в user.js module.exports=router отображает маршрутизатор и всю логику, необходимую для сопоставления /user (вместе с правильными обратными вызовами и т. Д.) *

Если вы удалите его, ваш requireоператор не может получить экспортированный объект из этого модуля, поэтому он потерпит неудачу.Ваш пользовательский объект будет эффективно аннулирован.

Проверьте здесь для получения дополнительной информации: https://www.tutorialsteacher.com/nodejs/nodejs-module-exports

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...