跳到主要内容

Node.js 写第一个 HTTP 服务时要先看懂什么

· 阅读需 2 分钟
一介布衣
全栈开发者 / 技术写作者

Node.js 最吸引前端开发者的地方,往往是“终于能用 JavaScript 写后端”。但刚开始时,如果只顾着找框架、写接口,很容易忽略一个更基本的问题:请求到底是怎么进来,又是怎么返回出去的。

先把请求和响应当成一来一回

一个 HTTP 服务最基础的动作其实很简单:

  • 浏览器发起请求
  • 服务端接收请求
  • 服务端处理逻辑
  • 返回内容给浏览器

只要把这条链路先看明白,很多后面的问题都会容易理解。

用原生模块就能看到核心结构

var http = require('http');

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'});
res.end('hello node');
}).listen(3000);

这段代码看起来很短,但已经把 Node.js 服务端最关键的两个对象摆在眼前了:req 代表请求,res 代表响应。

先别急着把所有逻辑塞进去

初学时很容易把“能跑起来”当成结束,于是路由判断、数据处理、字符串拼接全写进一个回调里。结果文件很快变长,也不容易再解释清楚每一步在干什么。

更好的理解方式是先问自己:这个请求来了以后,我要读什么信息?我要根据什么条件决定返回什么?只要这两个问题能答清楚,服务端思维就已经建立了一半。

返回内容之前要意识到状态码和头信息

即便是最简单的入门示例,也值得尽早注意 200404Content-Type 这些概念。它们不是附属细节,而是浏览器和服务端沟通时很重要的一部分。理解它们,后面看框架封装才不会只停留在表面。

小结

Node.js 的第一课不一定是框架,而是理解一次请求和一次响应到底在做什么。把这个基本模型吃透之后,再去看路由、模板或者数据库,学习路径会顺很多。