运行流程

运行流程

Node.js 提供了 http 模块直接创建 HTTP 服务,用来响应用户的请求,比如 Node.js 官网提供的创建 HTTP 服务的例子:

const http = require('http' const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain' res.end('Hello World\n' } server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/` }

ThinkJS 也是调用 http.createServer 的方式来创建服务的,所以整个运行流程包含了启动服务和响应用户请求二个部分。

系统服务启动

  • 执行 npm start 或者 node development.js

服务启动后,会打印下面的日志:

[2017-07-02 13:36:40.646] [INFO] - Server running at http://127.0.0.1:8360 [2017-07-02 13:36:40.649] [INFO] - ThinkJS version: 3.0.0-beta1 [2017-07-02 13:36:40.649] [INFO] - Enviroment: development #当前运行的环境 [2017-07-02 13:36:40.649] [INFO] - Workers: 8 #子进程数量

用户请求处理

当用户请求服务时,会经过下面的步骤进行处理。

  • 请求到达 webserver(如:nginx),通过反向代理将请求转发给 node 服务。如果直接通过端口访问 node 服务,那么就没有这一步了。

可以看到,所有的用户请求处理都是通过 middleware 来完成的。具体的项目中,可以根据需求,组装更多的 middleware 来处理用户的请求。