node.js基础语法整理--path、http篇

64 阅读5分钟

Node.js 提供了许多内置模块,可以帮助开发人员更快地开发应用程序。

主要使用模块为fshttppathcryptoeventsstream

  • http 模块提供了创建 HTTP 服务器和客户端的功能。
  • path 模块提供了处理文件和目录路径的功能。
  • fs 模块提供了文件系统相关的功能,如读写文件。
  • os 模块提供了操作系统相关的功能。
  • crypto 模块提供了加密相关的功能。
  • events 模块提供了事件驱动编程相关的功能。
  • stream 模块提供了流相关的功能。

本文针对 path 以及 http 模块进行基础知识总结,其他模块会放在node.js基础知识大框图下,定时更新。

一、path模块

path模块提供了操作路径的功能,我们将介绍如下几个较为常用的几个API:

API说明
path.resolve拼接规范的绝对路径 (常用)
path.sep获取操作系统的路径分隔符
path.parse解析路径并返回对象
path.basename获取路径的基础名称
path.dirname获取路径的目录名
path.extname获得路径的扩展名
//代码实例
const path = require('path');

//获取路径分隔符

console.log(path.sep);

//拼接绝对路径(常用)

console.log(path.resolve(__dirname, 'test'));

//解析路径

let pathname = 'D:/program file/nodejs/node.exe';

console.log(path.parse(pathname));

//获取路径基础名称

console.log(path.basename(pathname))

//获取路径的目录名

console.log(path.dirname(pathname));

//获取路径的扩展名

console.log(path.extname(pathname)

二、http模块

首先介绍计算机网络http的基础知识,挑着重点说~

HTTP协议;超文本传输协议,是一种基于TCP/IP的应用层通信协议,协议中主要规定了两个方面的内容

客户端:用来向服务器发送数据,可以被称之为请求报文。

服务端:向客户端返回数据,可以被称之为响应报文。

ps:报文可以简单理解为就是一堆字符串~~

a)请求报文

HTTP 请求报文由请求行(request line)、请求头部(header)、空行和请求数据 4 个部分组成。下面是一个简单的例子:

GET /path/to/file.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive

上面的例子中,第一行是请求行,包括请求方法(GET)、URL(/path/to/file.html)和 HTTP 协议版本(HTTP/1.1)。接下来是请求头部,包括 Host、User-Agent、Accept、Accept-Language、Accept-Encoding 和 Connection 等字段。最后是一个空行,表示请求头部结束。

b)响应报文 HTTP 响应报文和请求报文的结构差不多,也是由四个部分组成:状态行、响应头部、空行和响应数据。下面是一个简单的例子:

HTTP/1.1 200 OK
Server: nginx
Date: Mon, 28 Oct 2019 09:21:28 GMT
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Expires: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Pragma: no-cache

{
    "data": "Hello World!"
}

上面的例子中,第一行是状态行,包括 HTTP 协议版本(HTTP/1.1)、状态码(200)和状态描述(OK)。接下来是响应头部,包括 Server、Date、Content-Type、Transfer-Encoding、Connection、Expires、Cache-Control、X-XSS-Protection、X-Content-Type-Options 和 Pragma 等字段。最后是一个空行,表示响应头部结束,接下来是响应数据hello world。


言归正传,回到node中的http模块,在node.js中,模块提供了创建 HTTP 服务器和客户端的能力。您可以使用 require('http') 来引入该模块。


//1. 导入 http 模块
const http = require('http');

//2. 创建服务对象 create 创建 server 服务
// request 意为请求. 是对请求报文的封装对象, 通过 request 对象可以获得请求报文的数据
// response 意为响应. 是对响应报文的封装对象, 通过 response 对象可以设置响应报文
const server = http.createServer((request, response) => {
response.end('Hello HTTP server');
});

//3. 监听端口, 启动服务
server.listen(9000, () => {
console.log('服务已经启动, 端口 9000 监听中...');
});

http.createServer 里的回调函数的执行时机: 当接收到 HTTP 请求的时候,就会执行

在使用 http 模块时,需要注意以下几点:

  • 在回调函数中,必须使用 res.end() 方法结束响应,否则客户端将一直处于等待状态。
  • 在设置响应头时,需要注意字段名称的大小写。根据 HTTP 协议规定,字段名称不区分大小写,但建议按照惯例使用首字母大写的形式。
  • 在设置响应内容时,可以使用 res.write() 方法多次写入响应内容,最后再使用 res.end() 方法结束响应。

在node.js作为后端的开发过程中,通常配合express中间件完成,Express 建立在 Node.js 的 http 模块之上,它提供了更高层次的抽象,使得开发人员可以更方便地处理 HTTP 请求和响应。因此,您可以认为 Express 具有 http 模块的同等功能,并且提供了更多的便利。

例如,在使用 http 模块创建 HTTP 服务器时,您需要手动解析请求 URL、处理路由、设置响应头和响应内容等。而在使用 Express 时,这些操作都可以通过简单的 API 完成,大大提高了开发效率。

总之,Express 是一个非常强大的 Web 开发框架,它在 http 模块的基础上提供了更多的功能和便利。

还望各位前辈不吝赐教~,努力进步中!