node.js的模块分为三种
1.自定义模块
2.内置模块
3.第三方模块
fs.模块用于对于文件的读写操作
http模块用于对于创建服务操作
path模块用于对于我呢见路径的操作
readFile函数的局限性 只能读取体积小的文件 所用时间较长
下面我们讲一个新的读取文件流的方式
创建一个可读流,可读流的默认状态时静止的,只能读不能写 rs对象打印出来的heighWaterMark:65536 ,读取字节的大小
```javascript
const fs = require("fs") //导入fs模块
const rs = createReadSteam("../mp4"); //创建可读流对象
const ws =createWriteStream("你想要复制或写出文件的名称路径"); //创建可写流对象
//rs.resume(); //让可读流中的数据运动 字节读取大小65536
//rs.on("data",function(chunck){ //给数据绑定一个事件可以能够读取到数据
// console.log(chunck); //chunck是读取到的数据.
// ws.write(chunck);//write()方法里面填写要写出的数据,相当于把rs获取到的数据写入到ws可写流中
//});
rs.pipe(chunck);
rs.on("end",function(){ //读取数据结束时候打印
console.log("数据读取完了");
});
**********************
因为上面的写出代码有点复杂所以又有新的方法
rs.pipe(chunck) 这一个方法代码代替下面众多的代码
rs.on("data",function(chunck){ //给数据绑定一个事件可以能够读取到数据
console.log(chunck); //chunck是读取到的数据.
ws.write(chunck);//write()方法里面填写要写出的数据,相当于把rs获取到的数据写入到ws可写流中
});
********************************************************************************************
node.js中,每个页面中直接写的代码都是包裹在一个立即执行函数中
在每个模块中的代码都是包裹在一个立即执行函数中同时立即函数中都会有五个形参
exports, 专门用来暴露模块数据的对象
require, 专门用来引人外部的函数
module, 当前这个全局的module模块
__filename, 当前文件的绝对路径显示
__dirname 当前文件所在的文件夹目录的路径
可以这样来思考
因为直接写的代码既然包裹在一个立即执行函数中,那么每个函数有一个arguments.callee属性指向函数自己
所以我们可以在页面中直接打印
arguments.callee+""来测试
看看是否是在是在这个页面中
我们可以这样来测
let a = 5;
console.log(global.a) //如果等于5就说明是在全局中否则就不能打印出undefined
这里一定会是undefined 因为全局中的global是访问不到立即执行函数中的a的
当你这样写就可以正确打印出了
a = 5;
console.log(global.a) //因为没有加声明,所以为全局变量
这时候就能打印出5了