Node.js 为什么需要module.exports=路由器?

Node.js 为什么需要module.exports=路由器?,node.js,express,Node.js,Express,在node.js服务器配置文件中,我设置了app.use('/user',user.js),它将/user路由映射到user.js文件 然后在我的user.js文件中创建子例程来处理get或post请求 我的问题是:这个文件末尾的module.exports=router的职责是什么 如果我删除它,路由将停止工作,所以我不明白它是否是为了告诉我的服务器配置文件,user.js中有子路径 var express = require('express'); var user = require('

在node.js服务器配置文件中,我设置了
app.use('/user',user.js)
,它将
/user
路由映射到
user.js
文件

然后在我的
user.js
文件中创建子例程来处理get或post请求

我的问题是:这个文件末尾的
module.exports=router
的职责是什么

如果我删除它,路由将停止工作,所以我不明白它是否是为了告诉我的服务器配置文件,
user.js
中有子路径

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;
当你这样做的时候

var user = require('../../models/user');
user
对象将获得从
user.js
中的模块导出的任何内容。因此,在
user.js
中,
module.exports=router
映射路由器和映射
/user
所需的所有逻辑(以及正确的回调等)

如果删除它,您的
require
语句将无法从该模块获取导出的对象,这就是它失败的原因。您的用户对象将被有效地取消

查看此处了解更多信息:

路由器无法单独侦听(端口)请求。当您有很多路由时,路由器很有用。它有助于将应用程序分为多个模块

const app = express()
app.listen(port) 
应用程序正在侦听请求(而不是路由器),而你的user.js只是一个带有一些代码的单独js文件

module.export
中,module是表示当前模块的变量,export是一个对象。分配给
模块的任何内容。导出将作为模块公开

复制:Node.js中的模块是一个简单或复杂的功能,组织在单个或多个JavaScript文件中,可在整个Node.js应用程序中重用。

一旦你做了
module.export=Router
,现在你有了一个新创建的模块。在nodeJs中,在使用模块之前需要一个模块
constuser=require('./user.js')
将完成该过程。一旦你需要将节点模块放入你的应用程序中,你需要告诉它通过
app执行。使用('/',user)

或者你也可以做下面这样的事情

在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
  }));
 });
}
在main index.js中

const app = express()
require('./user.js')(app)

@hbat如果您认为这符合答案,我将不胜感激。