1.首先了解
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 作为一个JavaScript 的运行环境,仅仅提供了基础的功能和 API。然而,基于Node.js 提供的这些基础能,很多强大的工具和框架如雨后春笋,层出不穷,所以学会了 Node.js ,可以让前端程序员胜任更多的工作和岗位。
2.fs模块
fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。
node.js ----fs模块----系统文件操作模块
1.fs.stat 检测是文件还是目录(目录 文件是否存在)
2.fs.mkdir 创建目录 (创建之前先判断是否存在)
3.fs.writeFile 写入文件(文件不存在就创建,但不能创建目录)
4. fs.appendFile 写入追加文件(末尾追加)
5.fs.readFile 读取文件
6.fs.readdir 读取目录
7.fs.rename 重命名
8.fs.rmdir 删除目录
①fs.readFile
fs.readFile(‘参数1’[, ‘参数2’], 参数3)
fs.readFile(“./demo.txt”, “utf-8”, (err, data) => {}
参数1:必选参数,字符串,表示文件的路径。
参数2:可选参数,表示以什么编码格式来读取文件,一般是utf-8编码。
参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果。
const fs = require('fs');
fs.readFile('./demo1.txt', 'utf-8', (err, dataStr) => {
if (err) {
return console.log('读取文件失败', err.message);
}
console.log('读取文件成功', dataStr);
});
②fs.writeFile
fs.writeFile(参数1,参数2[,参数3],参数4)
参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径。
参数2:必选参数,表示要写入的内容。
参数3:可选参数,表示以什么格式写入文件内容,默认值是 utf8。
参数4:必选参数,文件写入完成后的回调函数。
const fs = require('fs');
fs.writeFile('./demo2.txt', '123456', (err) => {
if (err) {
return console.log('写入失败', err.message);
}
console.log('写入成功');
});
③fs模块初体验
//1导入fs模块对象
const fs = require("fs");
// node fs.js
// console.log(fs);
//2操作系统文件
//2.1 读取文件内容
fs.readFile("./demo.txt", "utf-8", (err, data) => {
// err为null,代表读取成功
if (err) {
console.log("失败");
} else {
console.log("成功" + data);
}
});
//2.2写入文件内容
const text = "追加";
fs.appendFile("./demo.txt", text, (err) => {
if (err) {
return console.log("写入失败", err.message);
}
console.log("写入成功");
});
//2.3检测当前文件目录是否存在
fs.stat("./files", (err, stats) => {
if (err) {
// 如果不存在,则创建新的文件目录之后,再写入数据
fs.mkdir("./files", () => {
console.log("创建files文件夹成功");
newFile();
});
} else {
newFile();
}
});
const newFile = () => {
fs.appendFile("./files/demo2.txt", text, "utf-8", (err) => {
if (!err) {
console.log("写入成功!");
}
});
};
④fs模块初体验之拼接导入
//1导入fs模块对象
const fs = require("fs");
const path = require("path");
let dataArr = "";
let dataArr2 = "";
fs.readFile("./demo.txt", "utf-8", (err, data) => {
dataArr = data.split(" ").join("\r\n");
fs.readFile("./demo2.txt", "utf-8", (err2, data2) => {
data = data + " " + data2;
dataArr2 = data.split(" ").join("\r\n");
fs.writeFile("./demo3.txt", dataArr2, (err) => {
});
});
// __dirname 当前文件的绝对路径
const fliePath = path.join(__dirname, "/demo3.txt");
const fliePath2 = path.basename(__dirname + "/demo3.txt", ".txt");
const fliePath3 = path.extname(__dirname + "/demo3.txt");
fs.writeFile(fliePath, dataArr, (err) => {
if (!err) {
console.log("写入成功!");
}
});
// dataArr = data.split(" ")
});
3.path模块
path 模块是 Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属
性,用来满足用户对路径的处理
①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/demo1.txt ');
console.log(pathStr2); //输出 当前文件所在目录\files\demo1.txt
②path.basename
path 必选参数,表示一个路径的字符串
ext 可选参数,表示文件扩展名
返回: 表示路径中的最后一部分
const path = require('path');
const fpath = '/a/b/c/index.html'; //文件的存放路径
var fullName = path.basename(fpath);
console.log(fullName); //输出index.html
var namewithoutExt = path.basename(fpath, '.html');
console.log(namewithoutExt); //输出index
③path.extname(path)
path 必选参数,表示一个路径的字符串
返回: 返回得到的扩展名字符串
const path = require('path');
const fpath = '/a/b/c/index.html'; //路径字符串
const fext = path.extname(fpath);
console.log(fext); //输出.html
④path模块体验
//1导入fs模块对象
const fs = require("fs");
const path = require("path");
let dataArr = "";
let dataArr2 = "";
fs.readFile("./demo.txt", "utf-8", (err, data) => {
dataArr = data.split(" ").join("\r\n");
fs.readFile("./demo2.txt", "utf-8", (err2, data2) => {
data = data + " " + data2;
dataArr2 = data.split(" ").join("\r\n");
fs.writeFile("./demo3.txt", dataArr2, (err) => {
});
});
// __dirname 当前文件的绝对路径
const fliePath = path.join(__dirname, "/demo3.txt");
const fliePath2 = path.basename(__dirname + "/demo3.txt", ".txt");
const fliePath3 = path.extname(__dirname + "/demo3.txt");
fs.writeFile(fliePath, dataArr, (err) => {
if (!err) {
console.log("写入成功!");
}
});
// dataArr = data.split(" ")
});
4.http模块
http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供
的 http.createServer() 方法,就能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务
①http普通使用
//部署node本地服务器
//1.导入http模块
const http = require("http");
// console.log(http);
//2.创建web服务器实例
const server = http.createServer();
//3.为服务器实例绑定request事件,监听客户端请求
//req 客服端请求响应 req.url req.method
//res 服务端请求响应 res.end()
server.on("request", (req, res) => {
console.log("服务器请求");
//发送的内容包含中文
const str = `您请求的url地址是 ${
req.url}---请求的 method类型是${
req.method}`;
//为了防止中文显示乱码的问题,需要设置响应头Content-Type 的值为text / html;charset = utf - 8;
res.setHeader("Content-Type", "text/html;charset=utf-8");
//把包含中文的内容,响应给客户端
res.end(str);
});
//4.启动服务器
server.listen(80, () => {
console.log("服务器启动了http://127.0.0.1:80 ");
});
②根据不同的 url 响应不同的 html 内容
// 根据不同的 url 响应不同的 html 内容
// 1.导入http,fs,path模块
const http = require("http");
const fs = require("fs");
const path = require("path");
// 2.创建nodejs服务器实例对象
const server = http.createServer();
// 3.绑定request事件,监听客户请求行为
server.on("request", (req, res) => {
// 3.1 获取URL地址
const url = req.url;
console.log(url);
let content = "";
// 3.3 读取页面数据
let pageUrl = path.join(__dirname, url);
// 请求网址: http://127.0.0.1/clock/index.html
if (url == "/") {
pageUrl = path.join(__dirname, "/index.html");
}
// 读取clock/index.html页面数据
fs.readFile(pageUrl, "utf-8", (err, dataStr) => {
if (!err) {
// 请求成功是响应的页面数据
res.end(dataStr);
} else {
// 请求失败时响应的页面数据
console.log("请求失败");
content = "<h1>404 Not found!</h1>";
res.end(content);
}
});
});
// 4.启动服务器
server.listen(80, () => {
console.log("http://127.0.0.1");
});