Node.js 在使用express构建web应用程序时,输入命令节点app.js后会发生什么

Node.js 在使用express构建web应用程序时,输入命令节点app.js后会发生什么,node.js,express,Node.js,Express,我是MEAN Stack的中级开发人员,但我想了解这一点,在我按下run node app.js之后会发生什么。在读了很多之后,这就是我发现的。如果我错了,请纠正我 步骤1:编写的所有JavaScript代码都被编译并查找语法错误。如果没有错误,则节点开始侦听所述端口。用外行的语言来说,我的意思是,它打开了一扇门,任何东西都可以从那扇门进来 第二步:所有的路线都列在某个地方,比如这些是GET,这些是POST请求等。该门上的守卫将检查传入的请求,并查看它是否与任何路线匹配。如果HTTP头和rout

我是MEAN Stack的中级开发人员,但我想了解这一点,在我按下run node app.js之后会发生什么。在读了很多之后,这就是我发现的。如果我错了,请纠正我

步骤1:编写的所有JavaScript代码都被编译并查找语法错误。如果没有错误,则节点开始侦听所述端口。用外行的语言来说,我的意思是,它打开了一扇门,任何东西都可以从那扇门进来

第二步:所有的路线都列在某个地方,比如这些是GET,这些是POST请求等。该门上的守卫将检查传入的请求,并查看它是否与任何路线匹配。如果HTTP头和routes and permissions(COR)匹配,警卫会授予它进入并执行该特定路由的权限,然后通过同一扇门将响应发送回,其中包含所需的字段,如状态、数据等

中间步骤:处理请求时,libev将所有IO任务分配给底层线程,当它们完成时,返回到事件表,然后由事件循环处理

这种理解正确吗?有人想给它加点什么吗。可能是我遗漏了什么。

编辑

/*Writing var once and declaring all dependencies at once is considered a
good practice.*/
var express = require('express'),
    cookieParser = require('cookie-parser'),
    bodyParser = require('body-parser'),
    mongoose = require('mongoose'),
    passport = require('passport'),
    session = require('express-session');

var app = express();
var server = require('http').Server(app);
var  io = require('socket.io')(server);
/*All my confidential data, keys go in here*/
require('./config/credentials.js').db(app, mongoose);
require('./config/environment.js')(app, express, bodyParser, cookieParser, session, passport, mongoose);

/*Models*/
Users = require('./models/users.js');

var checkauth = function(req, res, next) {
    console.log("In checkauth");
    console.log(req.user);
    if (req.isAuthenticated()) {
        console.log("In isAuthenticated");
        next();
    } else {
        console.log("Doesn't authenticate");
        res.status(401);
        res.set('Content-Type', 'application/json');
        res.end(JSON.stringify({
            'success': false
        }));
    }
};
/*Routes to all my files*/

require('./routes/index.js')(app, express, io);
require('./routes/vehico.js')(app);

/*Mobile Routes.*/
require('./routes/mobile/auth.js')(app, passport, mongoose);
require('./routes/mobile/settings.js')(app, checkauth);
require('./routes/mobile/cars.js')(app, checkauth);
require('./routes/mobile/devices.js')(app, checkauth);
require('./routes/mobile/locations.js')(app, checkauth);
require('./routes/mobile/group.js')(app, checkauth);
require('./routes/mobile/analytics.js')(app, checkauth);

/* Device Route */
require('./routes/device.js')(app, io);
require('./routes/trip.js')(app, checkauth);
require('./routes/mobile.js')(app, express, checkauth);
app.listen(app.get('port')); // port should be in config folder in a file not out here in open.
console.log('Express server listening on port 4000');

你的问题不是关于nodejs,而是关于expressjs。Nodejs没有“路由”。首先,node是一个运行Javascript的通用引擎。您所描述的是创建web服务器的一种非常特定的应用程序类型。显然(我们只是猜测,因为您没有向我们展示任何代码),您的app.js文件实际上创建并启动了一个web服务器,但这并没有内置到节点中——您是特定的应用程序,必须这样做。如果你给我们看你的app.js文件,你可能会得到更有意义的答案。现在你的问题非常广泛。听起来你想描述一个基于node.js的web服务器如何使用express routes。@jfriend00我已经添加了代码。我不是要求任何人解释,我是在问,我的理解正确吗?还有比我知道的更多的吗。我想更好地学习,不是通过代码,而是通过理解某些东西是如何工作的。代码稍后会为我提供。你的解释非常简单,也不是很详细,除了“不,它不完全正确”之外,唯一的表达方式是对实际工作方式进行非常广泛的解释。你的问题不是关于nodejs,而是关于expressjs。Nodejs没有“路由”。首先,node是一个运行Javascript的通用引擎。您所描述的是创建web服务器的一种非常特定的应用程序类型。显然(我们只是猜测,因为您没有向我们展示任何代码),您的app.js文件实际上创建并启动了一个web服务器,但这并没有内置到节点中——您是特定的应用程序,必须这样做。如果你给我们看你的app.js文件,你可能会得到更有意义的答案。现在你的问题非常广泛。听起来你想描述一个基于node.js的web服务器如何使用express routes。@jfriend00我已经添加了代码。我不是要求任何人解释,我是在问,我的理解正确吗?还有比我知道的更多的吗。我想更好地学习,不是通过代码,而是通过理解某些东西是如何工作的。你的解释很简单,也不是很详细,除了“不,这不完全正确”之外,唯一能说的就是对事情的实际运作有一个非常广泛的解释。