Javascript 请求命中节点js服务器时的执行流

Javascript 请求命中节点js服务器时的执行流,javascript,node.js,express,Javascript,Node.js,Express,我是Nodejs新手,在app.js中有一段代码: var config = require('./config') , express = require('express') , db = require('./app/lib/db') , utils = require('./app/lib/utils')(config, db) var app = express() http = require('http').createServer(app

我是Nodejs新手,在app.js中有一段代码:

var config = require('./config')
    , express = require('express')
    , db = require('./app/lib/db')
    , utils = require('./app/lib/utils')(config, db)    
var app = express() 
    http = require('http').createServer(app)
       require('./config/express')(app, config)
        require('./config/routes')(app, utils, model_list)
        http.listen(config.port, function () {
            console.log("API running at http://" + config.hostname)
        })
并在文件
config/routes
中设置路由器api列表,例如:

app.get('/api/' + name + '/:limit([0-9]+)/:page([0-9]+)', ctrls[name].list); // get list with page
app.get('/api/' + name, ctrls[name].list); // get list with default page = 1
app.post('/api/' + name + '/search', ctrls[name].search); // search
app.get('/api/' + name + '/:id([0-9a-f]+)', ctrls[name].get); // get by id

创建服务器并开始侦听配置端口后,当新请求到达服务器时,它的执行流是什么?服务器如何在
app.js
中捕获请求,然后移动到
routes.js
将其路由到一个函数来处理它?

它不会移动到
routes.js
routes.js
app.js
中是必需的,它将路由应用于
app
对象,即express服务器。这是在服务器开始侦听端口之前完成的一次


express在收到请求时如何路由请求完全由内部完成。基本上,它将检查请求方法(GET、POST等),然后检查请求的URI并尝试匹配路由,如果路由匹配,则执行函数。

您应该检查nodejs中http的解剖结构。

它不会移动任何东西,您正在
routes.js
中的快速引用(
app
)中设置
get
s和
post
s,这与您在
app.js
中启动的内容相同。谢谢。我现在明白了