var express = require(‘express’);
var app = express();
mongoose.connect( mongodb://iot:iot@localhost:27017/iothub
, { useNewUrlParser: true })
// view engine setup app.set(‘views’, path.join(__dirname, ‘views’)); app.set(‘view engine’, ‘jade’);
app.use(logger(‘dev’)); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, ‘public’)));
app.use(’/devices’, deviceRouter); app.use(’/tokens’, tokensRouter); app.use(’/emqx_web_hook’, webHookeRouter) app.use(’/messages’, messageRouter) app.use(’/tags’, tagsRouter) app.use(’/ota’, otaRouter)
// catch 404 and forwa有rd to error handler app.use(function(req, res, next) { next(createError(404)); });
// error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get(‘env’) === ‘development’ ? err : {};
// render the error page res.status(err.status || 500); res.render(‘error’); });
module.exports = app;
我想问一下怎样理解这段代码中的var app = express()和它下面的代码之间的关系,是不是在这个之后的代码最后都会被封装进app中去,包括ongoose.connect( mongodb://iot:iot@localhost:27017/iothub
, { useNewUrlParser: true })这段代码,然后我想再问一下,如果有另外的文件调用这个导出的模块时,var app = express()后面的代码是怎样执行的?
第一个你说的对, 都会被封装到 app 里面去 (仅限 app 相关的 回调 参数设置) 第二个, mongoose 跟 express 是两回事, 就跟我和你一样, 明明不认识但是因为这个问题(web 项目)的关系暂时联系到了一起. 至于第三个问题, 程序是顺序结构从上到下往下执行的, 你可以理解一直执行直到遇到 module.exports .
@yviscool 它不是并列执行吗,不是node.js程序都并发执行的吗?
@sunboy25 Node只是对于一些IO操作(如:网络请求、读取文件、数据库查询等)的执行是异步的,对于普通的代码还是正常的同步执行,和其他代码没有区别。而且只是异步执行,并不是并发执行,和真正的并发还是有一些区别的。
@dingyuanwu 好的,谢谢大神指点!