Node.js 为什么需要module.exports=路由器?
在node.js服务器配置文件中,我设置了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('
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如果您认为这符合答案,我将不胜感激。