(二)Node.js 基础模块

(二)Node.js 基础模块

  • [1. fs文件系统模块](#1. fs文件系统模块)
      • [1.1 什么是fs文件系统模块](#1.1 什么是fs文件系统模块)
      • [1.2 读取指定文件中的内容](#1.2 读取指定文件中的内容)
          • [1. fs.readFile()的语法格式](#1. fs.readFile()的语法格式)
          • [2. fs.readFile()的示例代码](#2. fs.readFile()的示例代码)
      • [1.3 向指定的文件中写入内容](#1.3 向指定的文件中写入内容)
          • [1. fs.writeFile()的语法格式](#1. fs.writeFile()的语法格式)
          • [2. fs.writeFile()的实例代码](#2. fs.writeFile()的实例代码)
      • [1.4 __dirname 表示当前文件所处的目录](#1.4 __dirname 表示当前文件所处的目录)
  • [2. path路径模块](#2. path路径模块)
      • [2.1 路径拼接](#2.1 路径拼接)
          • [1. path.join()的语法格式](#1. path.join()的语法格式)
          • [2. path.join()的代码示例](#2. path.join()的代码示例)
      • [2.2 获取路径中的文件名](#2.2 获取路径中的文件名)
          • [1. path.basename()的语法格式](#1. path.basename()的语法格式)
          • [2. path.basename()的代码示例](#2. path.basename()的代码示例)
      • [2.3 获取路径中的文件扩展名](#2.3 获取路径中的文件扩展名)
          • [1. path.extname()的语法格式](#1. path.extname()的语法格式)
          • [2. path.extname()的代码示例](#2. path.extname()的代码示例)
  • [3. http模块](#3. http模块)
      • [3.1 创建最基本的web服务器](#3.1 创建最基本的web服务器)
      • [3.2 根据不同url响应不同的html内容](#3.2 根据不同url响应不同的html内容)

1. fs文件系统模块

1.1 什么是fs文件系统模块

fs模块是Node.js官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作要求。

例如:

  • fs.readFile()方法,用于读取指定文件中的内容
  • fs.writeFile()方法,用于向指定的文件中写入内容

如果要在JavaScript代码中,使用fs模块来操作文件,则需要使用如下的方式先导入它:

javascript 复制代码
const fs = require('fs')

1.2 读取指定文件中的内容

1. fs.readFile()的语法格式

使用fs.readFile()方法,可以读取指定文件中的内容,语法格式如下:

javascript 复制代码
fs.readFile(path[, options], callback)

参数解读:

  1. 参数1:必选参数,字符串,表示文件路径
  2. 参数2:可选参数,表示以什么编码格式读取文件
  3. 参数3:必选参数,文件读取完成后,通过回调函数拿到读取结果
2. fs.readFile()的示例代码

以utf8的编码格式,读取指定文件的内容,并打印err和dataStr的值:

javascript 复制代码
 const fs = require('fs')
 fs.readFile('./11.txt', 'utf8', function(err, dataStr){
	console.log(err)
	console.log('-----')
	console.log(dataStr)
})

1.3 向指定的文件中写入内容

1. fs.writeFile()的语法格式
javascript 复制代码
fs.writeFile(file, data[, options], callback)
2. fs.writeFile()的实例代码
javascript 复制代码
const fs = require('fs')
fs.writeFIle('./files/2.txt', 'Hello Node.js!', function(err){
	if(err){
		return console.log('文件写入失败!' + err.message)
	}
	console.log('文件写入成功!')
})

1.4 __dirname 表示当前文件所处的目录

可用于解决拼接文件绝对路径问题

javascript 复制代码
// test.js
console.log(__dirname)

2. path路径模块

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

例如:

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

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

javascript 复制代码
const path = require('path')

2.1 路径拼接

1. path.join()的语法格式

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

javascript 复制代码
path.join([...paths])

参数解读:

  • ...paths <string> 路径片段的序列
  • 返回值:<string>
2. path.join()的代码示例

使用path.join()方法,可以吧多个路径片段拼接位完整的路径字符串:

javascript 复制代码
const path = require('path')
const pathStr = path.join('/a', '/b/b', '../', '/d', 'e')
console.log(pathStr) //输出 /a/b/d/e

const pathStr2 = path.join(__dirname, './files/demo.txt')
console.log(pathStr2) //输出 当前文件所处目录/files/1.txt

2.2 获取路径中的文件名

1. path.basename()的语法格式

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

javascript 复制代码
path.basename(path[, ext])

参数解读:

  • path <string> 必选参数,表示一个路径的字符串
  • ext <string> 可选参数,表示文件扩展名
  • 返回:<string> 表示路径中的最后一部分
2. path.basename()的代码示例

使用path.basename()方法,可以从一个文件路径中,获取到文件的名称部分:

javascript 复制代码
const fpath = '/a/b/c/index.html'

var fullName = path.basename(fpath) //输出 index.html
console.log(fullName)

var nameWithoutExt = path.basename(fpath, '.html')
console.log(nameWithoutExt)  //输出 index

2.3 获取路径中的文件扩展名

1. path.extname()的语法格式

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

javascript 复制代码
path.extname(path)
2. path.extname()的代码示例
javascript 复制代码
const path = require('path')
const fpath = '/a/b/c/index.html'
const fext = path.extname(fpath)
console.log(fext)  //输出 .html

3. http模块

http模块是Node.js官方提供的、用来创建web服务器的模块。通过http模块提供的http.createServer()方法,就能方便的把一台普通的电脑,编程一台web服务器,从而对外提供Web资源服务。

3.1 创建最基本的web服务器

步骤:

  1. 导入http模块
  2. 创建web服务器实例
  3. 为服务器实例绑定request时间,监听客户端的请求
  4. 启动服务器

导入模块:

javascript 复制代码
//1. 导入模块
const http = require('http')
//2. 调用http.createServer()方法,即可快速创建一个web服务器实例
const server = http.createServer()
//3. 绑定request事件,监听网络请求
server.on('request', (req, res) => {
	//只要有客户端请求我们自己的服务器,就会触发request事件
	console.log('Someone visit our web server.')
})
//4.调用服务器实例的.listen()方法,启动80端口
server.listen(80, () => {
	console.log('http server running at http://127.0.0.1')
})

3.2 根据不同url响应不同的html内容

动态响应内容
javascript 复制代码
server.on('request', (req, res) => {
	const url = req.url
	let content = '<h1>404 Not found!</h1>'
	if (url === '/' || url === '/index.html'){
		content = '<h1>首页</h1>'
	}else if (url === '/about.html') {
		content = '<h1>关于页面</h1>'
	}
	res.setHeader('Content-Type', 'text/html; charset=utf-8')
	res.end(content)
})
相关推荐
xd000023 小时前
11. vue pinia 和react redux、jotai对比
node.js
程序猿小D4 小时前
第16节 Node.js 文件系统
linux·服务器·前端·node.js·编辑器·vim
前端老六喔12 小时前
🎉 开源项目推荐 | 让你的 TypeScript/React 项目瘦身更简单!
node.js·前端工程化
醉书生ꦿ℘゜এ12 小时前
npm error Cannot read properties of null (reading ‘matches‘)
前端·npm·node.js
超级土豆粉13 小时前
从0到1写一个适用于Node.js的User Agent生成库
linux·ubuntu·node.js
空中湖16 小时前
‘pnpm‘ 不是内部或外部命令,也不是可运行的程序
npm·node.js
SailingCoder17 小时前
grafana-mcp-analyzer:基于 MCP 的轻量 AI 分析监控图表的运维神器!
运维·人工智能·typescript·node.js·grafana
又又呢20 小时前
前端面试题总结——webpack篇
前端·webpack·node.js
avoidaily1 天前
使用Node.js分片上传大文件到阿里云OSS
阿里云·node.js·云计算
xd000021 天前
8.axios Http网络请求库(1)
node.js