Web前端高级工程师培训:使用 Node.js 构建一个 Web 服务端程序(1)

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 模块

参考:https://nodejs.org/dist/latest-v15.x/docs/api/net.html

5-2、Node.js 中的 http 模块

参考:https://nodejs.org/dist/latest-v15.x/docs/api/http.html

该模块使用 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

相关推荐
To_OC1 小时前
别再串行写 await 了,Promise.all 才是并行请求的正确打开方式
前端·javascript·promise
vipbic1 小时前
中后台越做越乱后,我用插件化把它救回来了
前端·vue.js
Hyyy1 小时前
Computer Use 适合做什么,不适合做什么——一次真实使用后的思考
前端
小和尚同志2 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc
invicinble3 小时前
c端系统,其实更像一个信息展示平台
前端
李姆斯4 小时前
管理是否可以被完全量化
前端·产品经理·团队管理
名字还没想好☜4 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js
广州灵眸科技有限公司5 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) INI文件操作
java·前端·javascript·网络·人工智能
江华森5 小时前
Web 开发基础:HTTP 与 REST
前端·网络协议·http
IT_陈寒6 小时前
Redis的KEYS命令把我搞崩溃了,改用SCAN才活过来
前端·人工智能·后端