核心模块:Node.js中自带的一些模块
node中的核心模块 包括fs、path、http、url
fs模块是用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作。
使用fs模块时,先引入。
//引入核心模块fs
const fs = require("fs");
打印fs的内容时,使用utf8,或者toString(),将二进制数据流转换为 汉字等。
1. 读文件 fs.readFile()
// 异步操作
fs.readFile("day1/ok.txt", (err, data) =>{
if(err){
console.log("文件读取失败,原因是" + err);
return;
}
console.log(data.toString());
})
console.log("peace");
// 同步操作
const data = fs.readFileSync("day1/ok.txt", "utf8");
console.log(data);
console.log("peace");
异步操作中,先输出peace再输出ok.txt内容。
同步操作中,先输出ok.txt内容再输出peace。
2. 写文件 fs.writeFile()
//写文件
fs.writeFile("day1/aha.txt","写入文件", (err) =>{
if(err){
console.log("文件读取失败,原因是" + err);
return;
}
console.log("文件写入成功!");
console.log(data);
})
默认就是 utf8的编码风格
效果: 删掉文档原内容,写入新内容。如果指定文档不存在,就新建一个。
3. 追加文件 fs.appendFile()
var text = "爱在黎明破晓前"
fs.appendFile("day1/ok.txt", text, err => {
if(err){
console.log("文件追加失败,原因:" + error);
return;
}
console.log("文件追加成功!");
})
在指定文件后边,加入新内容。不会覆盖原内容。
4. 拷贝文件 fs.copyFile()
var text = "爱在黎明破晓前"
fs.copyFile("day1/ok.txt", "day1/yes.txt", err => {
if(err){
console.log("文件拷贝失败,原因:" + error);
return;
}
console.log("文件拷贝成功!");
})
//第一个参数是资源路径,第二个参数是 目的路径。 copy也会覆盖原文件内容。
拷贝文件 会覆盖原文件内容。
一般读取的是大文件
1. 读取流
var rs = fs.createReadStream("day1/yes.txt", {encoding: "utf8"});
let count = 0;
rs.on("open", () =>{
console.log("读取流 open");
})
rs.on("data", chunk =>{
//chunk是一个buffer,当前读取的数据片段,二进制数据流
count++;
console.log(count);
})
rs.on("end", () =>{
console.log("文件读取 end");
})
rs.on("close", () =>{
console.log("读取流 close");
})
2. 写入流
var ws = require("fs");
ws.write("林深时见鹿");
ws.end();
ws.on("open", () => {
console.log("可写流开启");
})
ws.on("close", () => {
console.log("可写流关闭");
})
path模块是用来处理路径的模块。它提供了一系列方法和属性,用来满足用户对路径的处理需求。
使用时,先引入。
//引入核心模块path
const fs = require("path");
1. 路径拼接path.join()
const pathStr = path.join('/a', '/b/c', '../../', './d', 'e');
console.log(pathStr); // \a\d\e
以后涉及路径拼接,都是用path.join()方法进行处理。
const pathStr2 = path.join(__dirname, './day1/1.txt')
2. path.basename() :文件名+后缀
3. path.dirname() :路径名
4. path.extname() :后缀名
5. path.parse() :将路径解析成对象
6. path.format() :将对象整合成路径字符串
7. path.isAbsolute() : 是否是一个绝对路径
let p = 'F:/all/node/day1/index.html'
console.log(path.basename(p)); //index.html
console.log(path.dirname(p)); //F:/all/node/day1
console.log(path.extname(p)); //.html
console.log(path.parse(p));
// {
// root: 'F:/',
// dir: 'F:/all/node/day1',
// base: 'index.html',
// ext: '.html',
// name: 'index'
// }
console.log(path.isAbsolute(p)); //true
url:是用来处理网络路径的模块。
使用时,先引入。
//引入核心模块url
const {URL} = require("url");
使用url可以得到一些参数
const url = new URL (""http://localhost:8080/index.html?a=1&b=2);
console.log(url);
返回参数列表
利用得到的参数,可以进行 一些对应的操作。
url.req: 是对应地址的路由信息
在上边的href中url.req指的是: index.html?a=1&b=2
http是网络服务模块,创建服务并开启服务
使用时,先引入
// 引入核心模块http
const http = require("http");
创建http服务
http.createServer((req,res) => {
res.writeHead(200, {'content-type': 'text/html;charset:utf-8'});
res.end("http create success");
}).listen(8000, () => {
console.log("http server is running on port 8000");
})
createServer() :创建http服务
listen() : 监听端口并创建服务
req :前端向后端传来的数据
res :后端向前端返回的数据
res.writeHead() :响应头
res.end() :返回前端的内容