初识 Node.js 与内置模块
一、在 Node.js 环境中执行 JavaScript 代码
- 打开终端
- 切换到 js 文件目录
- 输入 node 要执行的 js 文件的路径
终端中的快捷键:
- 使用
↑
键, 可以快速定位到上一次执行的命令- 使用
tab
键, 能够快速补全路径- 使用
esc
键, 能够快速清空当前已输入的命令- 输入
cls
命令, 可以清空终端
二、fs 文件系统模块
1、读取指定文件中内容
fs.readFile() 的语法格式:
fs.readFile(path[, options], callback)
参数解读:
- 参数1:必选参数,字符串,表示文件的路径
- 参数2:可选参数,表示以什么编码格式来读取文件
- 参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果
fs.readFile() 示例
文件:
代码:
// 1.导入fs模块,来操作文件
const fs = require('fs')
// 2.调用 fs.readFile()方法读取文件
// 参数1:读取文件的路径
// 参数2:读取文件的编码格式,一般默认指定 utf8
// 参数3:回调函数,拿到读取失败和成功的结果 err dataStr
fs.readFile('./files/12.txt', 'utf8', function (err, dataStr) {
// 如果读取成功,则err的值为null
// 如果读取失败,则err的值为错误对象
console.log(err); //打印失败
console.log("-------------");
console.log(dataStr); //打印成功
})
结果:
判断文件是否读取成功 :
可以判断 err 对象是否为 null , 从而知晓文件读取的结果
const fs = require('fs') fs.readFile('./files/12.txt', 'utf8', function (err, dataStr) { if (err) { return console.log("读取文件失败!" + err.message); } else { console.log("读取文件成功!" + dataStr); } })
结果:
2、向指定的文件中写入内容
fs.writeFile() 的语法格式:
fs.writeFile(file, data[, options], callback)
参数解读:
- 参数1:必选参数,需要指定一个文件路径的字符串, 表示文件的存放路径
- 参数2:必选参数,表示要写入的内容
- 参数3:可选参数,表示以什么格式写入文件内容, 默认值为 utf8
- 参数4:必选参数,文件写入完成后的回调函数
fs.writeFile() 示例
代码:
// 1.导入fs模块,来操作文件
const fs = require('fs')
// 2.调用 fs.writeFile(),写入文件的内容
// 参数1:文件的存放路径
// 参数2:要写入的内容
// 参数3:回调函数
fs.writeFile('f:/files/2.txt', 'abcd', function (err) {
// 如果文件写入成功,则 err 的值为null
// 如果文件写入失败,则 err 的值为错误对象
console.log(err); //打印失败
})
文件:
结果:
判断文件是否读取成功 :
可以判断 err 对象是否为 null , 从而知晓文件读取的结果
const fs = require('fs') fs.writeFile('./files/2.txt', 'abcd', function (err) { if (err) { return console.log("文件写入失败!" + err.message); } else { console.log("文件写入成功!"); } })
结果:
三、fs 模块 - 路径动态拼接的问题
路径动态拼接错误问题: 操作路径是已 ./ 或 …/ 开头的相对路径
原因: 代码在运行的时候, 会执行 node 命令时所处的目录, 动态拼接出被操作文件的完整路径
解决方案: 在使用 fs 模块操作文件时, 直接提供完整的路径
, 不要提供 ./ 或 …/ 开头的相对路径, 从而防止路径动态拼接的问题
__dirname 表示当前文件所处的目录
const fs = require('fs')
fs.readFile(__dirname + '/files/1.txt', 'utf8', function (err, dataStr) {
if (err) {
return console.log("读取文件失败!" + err.message);
} else {
console.log("读取文件成功!" + dataStr);
}
})
四、path 路径模块
path 模块是用来处理路径的模块
- path.join() 方法, 用来将多个路径片段拼接成一个完整的路径字符串
- path.basename() 方法, 用来从路径字符串中, 将文件名解析出来
- path.extname() 方法, 可以获取路径中的扩展名部分
在 JavaScript 代码中导入
const path = require("path")
1. path.join()
可以把多个路径片段拼接为完整的路径字符串
语法格式
path.join([...paths])
参数解读:
- …paths 路径片段的序列
- 返回值:
代码示例
const path = require("path")
// 注意: ../ 会抵消前面的路径
const pathStr = path.join("/a", '/b/c', '../', './d', 'e')
console.log(pathStr); //输出 \a\b\d\e
const pathStr2 = path.join(__dirname, './files/1.txt')
console.log(pathStr2); //输出 D:\Vscode\VSCodeSample\Node.js\files\1.txt
2. path.basename()
可以获取路径中的最后一部分, 经常通过这个方法获取路径中的文件名
语法格式
path.basename(path[, ext])
参数解读:
- path 必选参数, 表示一个路径的字符串
- ext 可选参数, 表示文件扩展名
- 返回: 表示路径中的最后一部分
代码示例
const path = require('path')
// 定义文件的存放路径
const fpath = '/a/b/c/index.html'
const fullName = path.basename(fpath)
console.log(fullName); // 输出 index.html
const nameWithoutExt = path.basename(fpath, '.html')
console.log(nameWithoutExt); // 输出 index
3. path.extname()
可以获取路径中的扩展名部分
语法格式
path.extname(path)
参数解读:
- path 必选参数, 表示一个路径的字符串
- 返回: 返回得到的扩展名字符串
代码示例
const path = require('path')
// 定义文件的存放路径
const fpath = '/a/b/c/index.html'
const fext = path.extname(fpath)
console.log(fext); // 输出 .html