1-使用 Node.js 构建一个 Web 服务端程序
文章目录
- [1-使用 Node.js 构建一个 Web 服务端程序](#1-使用 Node.js 构建一个 Web 服务端程序)
-
- 1、Node.js的安装与基础语法
- [2、Node.js 中的 JavaScript 与 浏览器中的 JavaScript](#2、Node.js 中的 JavaScript 与 浏览器中的 JavaScript)
-
- [2-1、Node.js 中的 JavaScript](#2-1、Node.js 中的 JavaScript)
- [2-2、浏览器 中的 JavaScript](#2-2、浏览器 中的 JavaScript)
- [3、什么是 WebServer(APP)?](#3、什么是 WebServer(APP)?)
- 4、如何构建一个基于网络的应用程序?
- [5、使用 Node.js 搭建一个 WebServer APP](#5、使用 Node.js 搭建一个 WebServer APP)
-
- [5-1、Node.js 中的 net 模块](#5-1、Node.js 中的 net 模块)
- [5-2、Node.js 中的 http 模块](#5-2、Node.js 中的 http 模块)
- [5-3、使用 http.Server 类创建一个基于 http 协议的 webServer 对象](#5-3、使用 http.Server 类创建一个基于 http 协议的 webServer 对象)
- 5-4、主机与端口
- 5-5、使用事件回调处理请求
1、Node.js的安装与基础语法
录播内容
2、Node.js 中的 JavaScript 与 浏览器中的 JavaScript
2-1、Node.js 中的 JavaScript
2-2、浏览器 中的 JavaScript
3、什么是 WebServer(APP)?
WebServer
,也称为 网页服务器
,通俗来讲就是提供 网页浏览器服务的机器。
通常 Web资源
(html、css、js、images......)都会存放在一个指定的 服务器 中,然后通过特定的软件 (WebServer APP
),如 Apache、Nginx、IIS......
,来提供访问服务。
访问模式
首先由客户端(浏览器)发送一个请求,通过网络连接到提供 Web服务
的机器,WebServer APP
会监听到客户端请求,并根据请求作出处理,返回对应的资源。
4、如何构建一个基于网络的应用程序?
无论使用什么语言(C、C++、Java、Node.js......),只要具备调用底层网络 API 的能力,那么就能实现基于网络的应用程序。
作为服务端
,主要通过监听指定的主机(IP)& 端口来获取请求的数据,然后根据具体的业务逻辑处理再通过网络返回数据。
作为客户端
,就是通过网络发送请求数据,并通过网络获取到服务端返回的数据。
5、使用 Node.js 搭建一个 WebServer APP
5-1、Node.js 中的 net 模块
5-2、Node.js 中的 http 模块
该模块使用 net
模块实现了基于 http
协议的各种 API。
核心类
Agent
该对象用来管理和维护客户端连接的持久性和重用,应用于客户端应用程序中(类似如:浏览器、postman等)。
ClientRequest
创建一个客户端连接对象,实现请求逻辑,应用于客户端。
Server
创建一个服务端对象,用于监听、处理客户端的请求,应用于服务端应用中。
ServerResponse
提供服务端响应相关的各种 API,应用于服务端(如:设置响应头信息,返回响应数据等)。
IncomingMessage
提供获取来源(Server中来源于Client的请求,Client中来源于Server的响应)信息的各种 API,应用于服务端(如:获取客户端当前请求的方法、URL、头信息等)。
Others
除此之外,该模块还提供了许多应用中需要用到的各种 属性 (如:METHODS、STATUS_CODES、maxHeaderSize 等)和 方法 (如:createServer、request 等)。
5-3、使用 http.Server 类创建一个基于 http 协议的 webServer 对象
javascript
// #C5-3-1
// 使用 Node.js 内置 require 方法引入核心模块 -> http
const http = require('http');
// 创建一个 Server 对象
const server = new http.Server();
// 也可以使用 createServer 方法创建一个 Server 对象
const server = http.createServer();
http
模块源码参考:Node.js 源码参考:https://github.com/nodejs/node/blob/v15.14.0/lib/http.js
5-4、主机与端口
javascript
// #C5-4-1
const http = require('http');
const server = http.createServer();
// 指定当前 Server 需要监听的主机
server.listen(8888, '0.0.0.0');
参数
- 第一个参数表示端口,如果省略或为0,讲默认分配一个未被使用的端口。
- 端口取值范围:1-65535。
- 第二个参数表示主机(IP),省略的时候,当 IPv6 可用时值为:
'::'
,否则为 IPv4 的地址:'0.0.0.0'
。'0.0.0.0'
表示主机所有可用的 IP。
参考:https://nodejs.org/dist/latest-v15.x/docs/api/http.html#http_server_listen
5-5、使用事件回调处理请求
javascript
// #C5-5-1
const http = require('http');
const server = http.createServer();
// 注册 request 事件回调函数,当有客户端连接请求被监听到的时候执行回调
server.on('request', () => {
console.log(`有客户端请求`);
});
server.listen(8888, '0.0.0.0');
参考:https://nodejs.org/dist/latest-v15.x/docs/api/http.html#http_event_request