第一章、 node.js快捷键
1. cd切换目录 ../ 切换到上一级目录
2. 使用↑箭头 快速定位到上一次执行的命令
3. 使用tab键 快速的补全路径
4. 使用esc键 快速的清空当已经输入的命令
5. cls键 清空终端里面的内容
第二章、fs文件模块
- fs.readFile()方法 读取指定文件内容
fs.readFile(path, [, options], callback)
参数1:必修参数,字符串,表示文件的路径。
参数2:可选参数,表示一什么编码格式来读取文件。
参数3:必选参数,文件读取完成后,通过回调函数拿到读取的。
// 导入fs模块
const fs = require('fs');
// 调用 fs.readeFile()方法读取文件
fs.readFile('./files/1.txt', 'utf8', function (err, dataStr) {
// 打印失败的结果
// 如果读取成功,则 err 的职位Null
// 如果读取失败 则err的值为 错误对象 dataStr 的值为undefined
console.log(err);
console.log('----------');
// 打印成功的结果
console.log(dataStr);
})
第三章. fs.writeFile()方法 写入文件
- fs.writeFile() 方法 向指定的文件中写入内容
fs.writeFile(file, data[,options],callback)
参数1:必选参数,需要指定一个文件路径的字符串,表示文件存放的路径。
参数2:必选参数,表示要写入的内容。
参数3:参数2:可选参数,表示一什么编码格式来读取文件,默认是UTF8。
参数4:必选参数,表示文件写入完成后的回调函数。
// 1.导入fs文件模块
const fs = require("fs");
// 2.调用fs.writeFile()方法 写入文件的内容
fs.writeFile("./files/txt", 'ok', function (err) {
// 如果文件写入成果则err 值为null
// 如果文件写入失败 则err 的值等于一个错误对象
// console.log(err);
if (err) {
return console.log('文件写入失败' + err.message);
} else {
console.log('文件写入成功');
}
})
- 读写的按列
// 1.引入fs系统模块
const fs = require("fs");
//2. 用 fs.readFile()方法读取文件的内容
fs.readFile('./files/4.学生成绩.txt', 'utf8', function (err, dadaStr) {
//3 判断文件是否读取成功
if (err) {
return console.log('读取文件失败' + err.message);
}
// console.log('读取文件成功' + dadaStr);
// 先把成绩的数据 按周空格分隔
const oldArr = dadaStr.split(' ')
// console.log(oldArr);
// 循环分隔后的数组 对每一项数据进行字符串的替换操作
const newArr = [];
oldArr.forEach(function (value) {
newArr.push(value.replace('=', ':'))
})
// console.log(newArr);
// 把新的数组的没一项进行合并 的到一个姓的字符串
const newStr = newArr.join('\r\n');
console.log(newStr);
// fs.writeFile() 抵用它写入成绩成功
fs.writeFile('./files/5.写入.txt', newStr, function (err) {
if (err) {
return console.log('写入文件失败' + err.message)
}
console.log('成绩写入成功');
})
})
第四章、 文件的路径(__dirname表示当前文件所存在的路径)
const fs = require("fs");
// 出现路径拼接错误的问题 是因为提供了 ./ 或者../ 开头的相对路径
// 如果解决这个问题 可以直接提供一个完整的文件存放的路径就可以
/* fs.readFile('./files/4.学生成绩.txt', 'utf8', function (err, data) {
if (err) {
return console.log('读取文件失败' + err.message);
}
console.log('读取文件成功' + data);
}) */
// 问题移值性非常的差 不利于维护
/* fs.readFile('C:\\Users\\默言\\Desktop\\node\\files\\1.txt', 'utf8', function (err, data) {
if (err) {
return console.log('读取文件失败' + err.message);
}
console.log('读取文件成功' + data);
}) */
// __dirname表示当前文件所处的目录
fs.readFile(__dirname+'/files/1.txt', 'utf8', function (err, data) {
if (err) {
return console.log('读取文件失败' + err.message);
}
console.log('读取文件成功' + data);
})
第五章、 path.join路径拼接
path.join([..paths])
参数:返回的路径
const path = require("path");
const fs = require("fs");
// // 注意 ../会抵消前面的路径
// const str = path.join('/a', '/b/c', '../', './d', 'e');
// console.log(str);//\a\b\d\e
// fs.readFile(__dirname + '/files/1.txt')
fs.readFile(path.join(__dirname, '/files/1.txt'), 'utf8', function (err, dada) {
if (err) {
return console.log(err);
}
console.log(dada);
})
- path.basename()方法 获取文件名
const path = require("path");
// 定义文件存放的路径
const fPath = '/a/b/c/index.html/';
/* const fullname = path.basename(fPath);
console.log(fullname);//index.html
*/
// basename 获取文件的名称
const name = path.basename(fPath, 'html')
console.log(name);//index
- path.extname()方法 获取文件后缀名
const path = require("path");
// extname 获取文件的后缀
const fPath = '/a/b/c/index.html';
const fext = path.extname(fPath);
console.log(fext);//.html
- 按列
// 导入fs 模块
const fs = require("fs");
// 导入path 模块
const path = require("path");
// 定义正则表达式 分别匹配<style></style>和<script></script>
const regStyle = /<style>[\s\S]*<\/style>/;
const regScript = /<script>[\s\S]*<\/script>/;
// 调用fs.readFile()读取文件
fs.readFile(path.join(__dirname, './clock/index.html'), 'utf8', function (err, data) {
if (err) {
return console.log('读取HTML文件失败' + err.message)
}
console.log('文件写入成功' + data);
// 读取文件成功后 调用对应的三个方法 分别拆解css js html文件
resolveCSS(data);
resolveJS(data);
resolveHTML(data);
})
// 定义处理css 样式的方法
function resolveCSS(htmlStr) {
// 使用正则提取需要的内容
const r1 = regStyle.exec(htmlStr);
// 将提取出来的样式字符串 进行字符串的replace 替换操作
const newCss = r1[0].replace('<style>', '').replace('</style>', '');
// 调用 fs.writeFile()方法 将提取的样式 写到root目录中的index.css的文件里面
fs.writeFile(path.join(__dirname, './root/index.css'), newCss, function (err) {
if (err) return console.log('写入css样式失败');
console.log('写入css样式文件成功');
})
}
// 定义处理js脚本的方法
function resolveJS(htmlStr) {
// 通过正则提取对应的js内容
const r2 = regScript.exec(htmlStr);
// 将提出出来的内容进行处理
const newJS = r2[0].replace('<script>', '').replace('</script>', '');
// 将处理的结果写入到 root 目录中的index.js文件里面
fs.writeFile(path.join(__dirname, './root/index.js'), newJS, function (err) {
if (err) return console.log('写入Js脚本文件失败');
console.log('写入js脚本文件成功');
})
}
// 定义处理HTML结构的方法
function resolveHTML(htmlStr) {
// 将字符床调用replace 方法 把内嵌的style和script替换为外联的link 和script标签
const newHTML = htmlStr.replace(regStyle, '<link rel="stylesheet" href="./index.css"/>').replace(regScript, '<script src="index.js"></script>')
// 写入index.html 这个文件
fs.writeFile(path.join(__dirname, "./root/index.html"), newHTML, function (err) {
if (err) return console.log("写入HTML文件失败" + err.message);
console.log('写入html页面成功');
})
}
第六章、 http模块
1.导入http模块
const http=require('http');
-
http.createSever()方法 可创建一个web服务器
-
request 为服务器绑定时间
-
listen启动服务器
// 1.导入http模块
const http = require("http");
// 2.创建外部服务器实例
const sever = http.createServer()
// 3.为服务器实例绑定request事件,监听客户端的请求
sever.on('request', function (req, res) {
console.log('Someone visit web sever');
})
// 4.启动服务器 80的端口可以省略
sever.listen(8080, function () {
console.log('sever running at http://127.0.0.1:8080');
})
- 按列
// 1.导入 http模块
const http = require("http");
// 2.导入fs 模块
const fs = require("fs");
// 3.导入path模块
const path = require("path");
// 2.1 创建一个 web 服务器
const server = http.createServer();
// 2.2 监听web 服务器的request 事件
server.on('request', (req, res) => {
// 3.1 获取到客户端请求 url 的地址
const url = req.url;
// /root/index.html
// /root/index.css
// /root/index.js
// 3.2 把请求的url 地m址映射为具体的文件的存放路径
// const fPath = path.join(__dirname, url);
// 定义一个空的文件路径
let fPath = '';
// 如果请求的路径是否为 / 则手动定义文件存放的路径
if (url === '/') {
fPath = path.join(__dirname, './root/index.html');
} else {
// /root/index.html
// /root/index.css
// /root/index.js
// 请求路径不为 / 动态拼接文件存放的路径
fPath = path.join(__dirname, './root', url)
}
// 4.1 根据映射过来的文件路径读取文件的内容
fs.readFile(fPath, 'utf8', (err, data) => {
// 4.2 文件读取失败 向客户端响应固定的错误的信息
if (err) return res.end('404 Not found');
// 4.3 读取成功 将数据响应给客户端
res.end(data)
})
})
// 2.3 启动服务器
server.listen(80, () => {
console.log('sever running at http://127.0.0.1');
})
标签:node,fs,const,log,err,path,console
From: https://www.cnblogs.com/dexue/p/16959160.html