node知识点总结(三)

234 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情

前言

大家好呀,我是L同学。在上篇文章node知识点总结(二)中,我们学习了node相关知识点,包括global模块、fs文件系统模块、如何读取指定文件内容、如何向指定文件写入内容等相关知识点。今天,在这篇文章中,我们来学习node的其他知识点,包括path路径模块、路径拼接、获取路径中的文件名、获取路径中的文件扩展名、http模块等相关知识点。

path路径模块

path模块是Node.js官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。

例如:

  • path.join()方法,用来将多个路径片段拼接成一个完整的路径字符串。
  • path.basename()方法,用来从路径字符串中,将文件名解析出来。

如果要在 JavaScript 代码中,使用 path 模块来处理路径,则需要使用如下的方式先导入它。

const path = require('path')

路径拼接 —— path.join()

使用path.join()方法,可以把多个路径片段拼接为完整的路径字符串,语法格式如下。

path.join([...paths])
  • ...paths 路径片段的序列
  • 返回值:
const path = require('path');

console.log( path.join('a', 'b', 'c') ); // a/b/c
console.log( path.join('a', '/b/', 'c') ); // a/b/c
console.log( path.join('a', '/b/', 'c', 'index.html') ); // a/b/c/index.html
console.log( path.join('a', 'b', '../c', 'index.html') ); // a/c/index.html
console.log(__dirname); // node自带的全局变量,表示当前js文件所在的绝对路径
// 拼接成绩.txt的绝对路径
console.log( path.join(__dirname, '成绩.txt') ); // ------ 最常用的

获取路径中的文件名 —— path.basename()

使用 path.basename() 方法,可以获取路径中的最后一部分,经常通过这个方法获取路径中的文件名,语法格式如下。

path.basename(path[,ext])
  • path 必选参数,表示一个路径的字符串。
  • ext 可选参数,表示可选的文件扩展名。
  • 返回: 表示路径中的最后一部分。
// 找文件名
console.log( path.basename('index.html') ); // index.html
console.log( path.basename('a/b/c/index.html') ); // index.html
console.log( path.basename('a/b/c/index.html?id=3') ); // index.html?id=3
console.log(path.basename('/api/getbooks')) // getbooks

获取路径中的文件扩展名 —— path.extname()

使用 path.extname() 方法,可以获取路径中的扩展名部分,语法格式如下。

path.extname(path)
  • path 必选参数,表示一个路径的字符串。
  • 返回: 返回得到的扩展名字符串。
// 找字符串中,最后一个点及之后的字符
console.log( path.extname('index.html') ); // .html
console.log( path.extname('a.b.c.d.html') ); // .html
console.log( path.extname('asdfas/asdfa/a.b.c.d.html') ); // .html
console.log( path.extname('adf.adsf') ); // .adsf

http模块

http模块是Node.js官方提供的、用来创建web服务器和客户端的模块。它提供了一系列的方法和属性,例如:

  • http.createServer() 方法,用来创建一个web 服务器,从而对外提供web资源。
  • http.request() 方法,用来发起 http 网络请求,请求其它web 服务器上的资源。

如果要在JavaScript代码中使用http模块,则需要先导入它。

const http = require('http')

创建最基本的web服务器

创建web服务器的基本步骤

  1. 导入http模块
  2. 创建web服务器实例
  3. 启动服务器
  4. 为服务器实例绑定request事件,监听客户端的请求
// 1. 导入 http 模块 
const http = require('http');

// 2. 创建 web 服务器实例 
const server = http.createServer();

// 3. 启动服务器
server.listen(3000, () => {
    console.log('my server start work');
});

// 4. 为服务器实例绑定 request 事件,监听客户端的请求 
// 当客户端发送请求到服务器的时候,会触发这个事件
server.on('request', () => {
    // 这里要处理客户端的请求
    console.log('hello html');
});

计算机中的端口号,就好像是现实生活中的门牌号一样。通过门牌号,外卖小哥可以在整栋大楼众多的房间中,准确把外卖送到你的手中。 同样的道理,在一台服务器中,可以运行成百上千个web 服务。此时,通过端口号,客户端发送过来的网络请求,可以被准确地交给端口号对应的web服务进行处理。

request请求对象

只要服务器接收到了客户端的请求,就会调用通过server.on('request', (req, res) => {}) 为服务器绑定的request事件处理函数。 req是客户端提交过来的请求内容,如果想在事件处理函数中,访问与客户端相关的数据或属性,可以使用如下的方式:

接收req参数:

  • 获取请求的地址: req.url

  • 获取请求方式: req.method

  • 获取请求头: req.headers