Express框架

一,Express的原理和基础API

Express 是Node.js开发中使用最广泛的服务器框架,通过它可以快速的搭建一个Web容器并向外界提供Web服务。
Express基于Node.js的http/https搭建服务器,通过中间件的即插即用方式来扩展功能。
需要了解服务器的原理和网络协议

服务器的原理:

服务器:通俗讲就是高性能的计算机或者是特殊用于的计算机
网络协议:链路层--->网络层--->传输层--->应用层
链路层:解决MAC地址查找的问题,一般通过广播的方式以太网协议
网络层:解决地址的查找问题,通过区域网和广域网的方式IP协议
传输层:解决通信的问题,如果找到对方的通讯软件在电脑上通过端口查找TCP或者UDP协议
应用层:解决数据格式定义的问题HTTP/HTTPS
一段数据包含以太网协议的头部+IP协议的头部+TCP协议的头部+HTTP协议的头部+数据
TCP通过三次握手来建立连接,TCP通过四次握手来终止连接
三次连接
- 第一次握手:客户端将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给服务器端,客户端进入SYN_SENT状态,等待服务器端确认
- 第二次握手:服务器端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器端将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD状态
- 第三次握手:客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务器端,服务器端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED状态,完成三次握手,随后客户端与服务器端之间可以开始传输数据了。
四次挥手
- 第一次挥手:客户端发送一个FIN=M,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。意思是说"我客户端没有数据要发给你了",但是如果你服务器端还有数据没有发送完成,则不必急着关闭连接,可以继续发送数据。
- 第二次挥手:服务器端收到FIN后,先发送ack=M+1,告诉客户端,你的请求我收到了,但是我还没准备好,请继续你等我的消息。这个时候客户端就进入FIN_WAIT_2 状态,继续等待服务器端的FIN报文。
- 第三次挥手:当服务器端确定数据已发送完成,则向客户端发送FIN=N报文,告诉客户端,好了,我这边数据发完了,准备好关闭连接了。服务器端进入LAST_ACK状态。
- 第四次挥手:客户端收到FIN=N报文后,就知道可以关闭连接了,但是他还是不相信网络,怕服务器端不知道要关闭,所以发送ack=N+1后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。服务器端收到ACK后,就知道可以断开连接了。客户端等待了2MSL后依然没有收到回复,则证明服务器端已正常关闭,那好,我客户端也可以关闭连接了。最终完成了四次握手。

基本使用

1. 创建一个项目文件夹,命名为express-demo并通过cd命令进入到express-demo目录。
2. 使用npm init -y初始化项目,生成package.json项目描述文件。
3. 使用npm install -save express安装express。
4. 创建一个index.js文件,写入以下代码访问浏览器即可查看效果。

const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('你好!'))
app.listen(3000, () => {
    console.log('服务器创建完毕,监听3000端口')
})

5. 打开终端,在express-demo目录下执行:

node index.js

此外,如果希望不在console中调试,而是在Chrome中通过dev tools调试,可以使用:

node --inspect index.js

然后打开开发者工具,里面有个Node图标,点击即可调试。

假如你希望每一次修改代码都自动重启Express,可以全局安装nodemon,它和node的命令几乎一样。

npm install -g nodemon
nodemon --inspect index.js

6. 打开浏览器,输入:http://本机ip/ 查看效果。

你可能感兴趣的:(Express框架)