运行流程
运行流程
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 来处理用户的请求。