大前端在不断发展 , 越来越多人选择前端这个行业 , 为了不被时代甩开,跟着我一起回顾逐渐被时间冲刷的知识吧.
首先我们得知道node.js是个什么东西
Node.js是基于Chromev8引擎的JavaScript运行环境
他不是一个编程语言,某些js语法也可以直接使用
🎉🎉🎉 既然他不是一个编程语言, 那么问题来了(注意咯!)
浏览器和node.js端的区别是什么呢?
相同点就是: 它们都支持ECMAScript, 都有变量、运算、函数。。。等等
不同点: Node.js没有 window、dom、bom
浏览器中也没有Node.js中的模块 fs、http。。。等等
同步和异步
同步的执行顺序是: 从上到下的顺序,如果一个文件很大,那么他会等待这个文件执行完之后,在执行下面的代码
✨✨✨举例: 服务员给顾客点菜,等顾客点完菜之后才能给另一桌的顾客点菜
异步的执行顺序是: 执行一个很大的代码时 不会死等这个很大的代码执行完毕,会与其他小的文件一起执行
✨✨✨举例: 大家一起做核酸,扫码时我的手机出问题了,工作人员会让后面的人插到我的前面扫码,这个过程称之为异步
💥💥💥开始进入主题
fs.异步读取
格式:
fs.readFile('文件路径'[,选项], function (err, data) {
if (err) {
console.log('有错误,错误内容是', errr)
} else {
console.log('读入文件正确,内容是', data)
}
});
-
参数1:文件路径。 相对路径和绝对路径均可。
-
参数2: 配置项,可不写。主要用来配置字符集。一般可设置为
utf8
,如果不设置该参数,文件内容会Buffer形式返回。 -
参数3: 回调函数。这个回调函数在读完文件后自动被自动调用,并传入 err 和 data
-
如读取成功,回调函数中的两个参数分别是:
-
err: null
-
data: 文件内容。如果不设置参数2,则返回二进制数据。可以使用 toString() 方法将二进制数据
转为正常字符串
-
-
如读取失败,回调函数中的两个参数分别是:
- err: 错误对象
- data: undefined
通常会用以下方法读取文本
-
const fs = require("fs")
fs.readFile('文件路径',(err, data) => {
if (err) throw err;
console.log(data);
});
🛒🛒上面的data将会是一个Buffer对象类似于数组,它的元素为16进制的两位数,它表示读出来的内容在计算机中的二进制格式。它有一个toString()方法,可以用来把内容以UTF-8的格式转成字符串。
fs-readFile-观察并处理错误
node.js相对于浏览器来说错误有些扎眼, 对于前端工作人员来说并不友好
🎉🎉🎉如果读文件有错误, 我们该怎么解决呢?
如果读文件 有错误
fs.readFile('./02.txt12112',function(err, data) {
// 如果读文件出错了(可能的原因:路径不对,文件不存在....)
// err的值就不是null
// if(出错) {
// 处理错误
// } else {
// 正常
// }
if(err){
// throw: 抛出
// throw 这个命令用来告诉node.js,这里有一个错误
// 停止后续代码的执行
console.log(err)
return
// throw err;
// 尽早返回
}
console.log('读出的内容是', data)
})
在node.js中遇到的错误之后,应该观察错误说明
fs 同步读取文件
格式
const fs = require("fs")
let rs = fs.readFileSync('文件路径',"utf8");
console.log(rs)
- api的名字后面有Sync(async是异步的,sync表示同步的)
- 不是通过回调函数来获取值,而是像一个普通的函数调用一样,直接获取返回值
👀👀👀试想一下,如果获取的途中,数据错误,但又想要后面的数据执行我们该怎么办呢👀👀👀
实例:
console.log(1)
let res = fs.readFileSync('错误路径')
console.log(res)
console.log(2)//想要执行的代码
解决方法:用try. catch 结构 (属于ES语法,在浏览器中也可以使用)
try {
const fs = require("fs")
let rs = fs.readFileSync('文件路径',"utf8");
console.log(rs)
} catch(err) {
console.log(err)
}