Node学习之HTTP模块

node中有一个很是强大的模块,就是用于建立网络应用的HTTP模块。例如咱们能够建立一个服务监听某个给定的端口,这样咱们就能够为客户建立一个后端服务。就像React或者Angular建立的应用,或者在手机上使用的移动端应用。node

回到node的文档中,能够找到HTTP模块的信息,在这里能够看到不少类,好比http.Agenthttp.ClientRequest等等。每一个类都有不少熟悉,方法和事件。 数据库

打开编辑器,实际上手才是最重要的。
这里的 server也是一个 EventEmitter类,天然也是具有全部 EventEmitter的功能。
node的官方文档中的 HTTP模块能够看到 http.Server,点进去就知道这个类继承自 net.Server类,这是另外一个定义在 net模块中的类,点进去看文档说明知道 net.Server是一个 EventEmitter。这也是说在 node中不少功能都基于 EventEmitter

回到编辑器,继续写下去。 json

当咱们在控制台运行应用的时候,就会监听端口号3000。就像以前所说的,当有一个请求或者了解, server就会发起事件。天然咱们就可使用 on方法来处理事件,在监听以前咱们先要建立一个监听器,或者说是句柄。
上面的事件第一个参数的事件名称是 connection,能够在文档中找到,第二个是一个回调函数,或者说是真正的监听者。这个监听者是一个 socket类的实例。在控制台运行能够看到它在监听3000端口了,须要中止监听直接 Ctrl+C键强制退出便可。
在浏览器打开这个端口地址: http://localhost:3000/
回到控制台能够看到打印了“新的链接”的文字。因此这个 server对象能够发起不一样的事件待咱们处理。

如今咱们换一种方式,直接给CreateServer方法一个回调函数,这个函数须要两个参数。分别是请求和响应,这样就能够直接操做真实的requestresponse对象。咱们能够检测若是请求的url/,咱们就返回点东西给客户端。 后端

浏览器打开,咱们在网页中看到了文字 Hello World

固然咱们若是想建立一个网络应用的后端服务,须要处理不少的路由规则。咱们继续添加一个if代码块。假设咱们想从数据库返回课程的列表,当请求路径匹配的话,就返回一个json对象。 数组

浏览器打开,在网页中咱们看到了已经将数组转换为 json数据格式的数据。
固然这样每次控制台执行后还须要手动打开浏览器仍是有点麻烦,咱们再改造下,让控制台执行后自动打开浏览器。

//require引入child_process,自动打开浏览器
const childProcess = require('child_process');
//监听后自动打开浏览器
childProcess.exec('start http://127.0.0.1:3000/');
复制代码

这就是一个最基本的node建立的服务器,现实中咱们不会使用http模块直接建立后端服务。缘由是随着项目需求愈来愈多时,所须要写的路由规则也是随着增加。一直都是在回调函数中线性的增长它们的内容,取而代之的是使用一个叫Express的框架。它能够给应用一个清晰的结构,来处理不一样的路由请求,使用Express来替代node原有的HTTP模块的功能。浏览器

相关文章
相关标签/搜索