(二)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)
})
相关推荐
你的人类朋友2 小时前
关于express中间件的工作原理
javascript·node.js·express
Mintopia2 小时前
深入理解 Node.js 中的 fs/promises 模块
前端·javascript·node.js
前端的阶梯2 小时前
深入理解流式传输数据之HTTP(二)
node.js
玲小珑4 小时前
LLMOps开发(三) RAG
langchain·node.js·ai编程
逾明5 小时前
在项目中使用Volta控制node版本
前端·node.js
总之就是非常可爱6 小时前
浏览器缓存机制:强缓存 vs 协商缓存
前端·面试·node.js
赵晟鼎6 小时前
node常用fs文件操作方法
前端·javascript·node.js
丁总学Java7 小时前
如何用 nvm alias default 18.20.8 实现全局 Node.js 版本管理?一篇保姆级指南!!!
linux·node.js·vim
菠菜7071 天前
Node十六章(pnpm原理及软硬链接)
前端·javascript·node.js
孟陬1 天前
如何让 vite 编译含有 Node.js 模块的 TS 文件 ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING
typescript·node.js