Node.js
Node.js概述
javascript语言运行在浏览器的内核中的js引擎中
Node.js是一个开发平台,在这个平台上可以进行软件开发,并且开发出功能更加强大软件,在这个平台上进行开发很方便,因为Node.js提供了丰富的API和优秀的运行性能
在Node.js平台中开发的语言仍然是JavaScript
Node.js:js解析器;内置的API
浏览器:js解析器;内置的API
Node.js开发环境
关于命令行用法补充
切换盘符命令:盘符+:
cd切换目录命令:cd路径名称
查看当前目录下的文件 dir
清屏命令 cls
创建文件夹 mkdir 文件夹名称
退出命令行环境的方式:1.ctrl+c 2.输入 .exit
fs模块
fs FileSystem文件系统模块 ,用于操作文件
1.读取文章内容
fs.readFile 异步方式
fs.readFileSync 同步方式
// 文件系统操作-读取文件
// 1.引入文件模块
var fs = require('fs')
// 2.使用模块的API操作文件
// 参数一:表示读取文件的路径
// 参数二:读取文件的编码
// 参数三:读取文件成功的回调函数
fs.readFile('./data.txt', 'utf-8', function (err, data) {
// 参数err表示读取成功或者失败(如果err===null表示读取成功,否则err提示错误信息)
//参数data表示读取到的文件内容
// 如果err是true,表示读取失败,此时一般要终止后续代码的运行
if (err) {
return
}
console.log(err);
console.log(data);
})
总结:
参数一:表示读取文件的路径
参数二:读取文件的编码
参数三:读取文件成功的回调函数
参数err表示读取成功或者失败(如果err===null表示读取成功,否则err提示错误信息)
参数data表示读取到的文件内容
如果err是true,表示读取失败,此时一般要终止后续代码的运行
//同步的方法读写文件
//同步的方法代码简单,但是性能没有异步的方式好
const fs = require('fs')
//采用同步的方式读取文件
let res = fs.readFileSync('./data.txt', 'utf-8')
console.log(res);
总结:
同步的方法代码简单,但是性能没有异步的方式好
2.写入文章内容
fs.writeFlie 异步方式
fs.writeFileSync 同步方式
// 写文件操作
const fs = require('fs')
// 参数一表示写入文件的路径
// 参数二表示写入的文件内容
// 参数三表示写入内容的编码
// 参数四希尔成功的回调函数
fs.writeFile('./data.txt', 'abc', 'utf-8', function (err) {
if (err) {
//写入文件失败
console.log(err);
return
}
console.log("写入文件成功");
})
总结:
参数一表示写入文件的路径
参数二表示写入的文件内容
参数三表示写入内容的编码
参数四希尔成功的回调函数
//采用同步的方式写文件
const fs = require('fs')
const res = fs.writeFileSync('./data.txt', 'coniqiwa', 'utf-8')
console.log(res);
成绩处理案例
需求:将横线之上的数据转换为横线之下的数据
读取文件中原始数据,加工后写入到另一个文件中
\r\n 表示回车换行
str.replace(’=’, ‘:’)
//成绩处理案例
//1.导入fs文件系统核心模块
const fs = require('fs')
// 2.读取原始的文件数据
let scores = fs.readFileSync('./score.txt', 'utf-8')
// 3.处理文件的分数格式
// \r\n 表示回车换行
scores = scores.replace(/\s/g, '\r\n')
// str.replace('=', ':')
scores = scores.replace(/=/g, ':')
// 4.把处理的结果写入文件
fs.writeFileSync('./result.txt', scores, 'utf-8')
console.log('写入成功');
path 模块
path.sep用法
const fs = require('fs')
const path = require('path')
//__dirname当前js文件所处的路径
console.log(__dirname);
// path.sep自动检测平台环境,根据环境自动选中斜杠类型
//windows \
//linux/max/unix /
let res = fs.readFileSync(__dirname + path.sep + 'path.txt', 'utf-8')
console.log(res);
console.log(path.sep);
总结:
path.sep自动检测平台环境,根据环境自动选中斜杠类型
windows \ linux/max/unix /
path.join拼接路径
/*
核心模块:path 路径操作
1、导入核心模块
2、使用模块相关API处理路径
// path.join方法的作用:把参数中所有的路径拼接到一块并且规范化路径
path.join([...paths]), 参数表示Rest参数
*/
const path = require('path')
// D:\current\day14\02-code\data.json
// let p = path.join(__dirname, './data.json')
// D:\current\day14\02-code\abc\hello\data.json
// let p = path.join(__dirname, 'abc', 'hello', './data.json')
// D:\current\day14\02-code\hello\data.json
let p = path.join(__dirname, 'abc', '../hello', './data.json')
console.log(p)
时钟案例
//时钟案例
const path = require('path')
const fs = require('fs')
//准备相关文件路径
const htmlPath = path.join(__dirname, './clock.html')
const cssPath = path.join(__dirname, './clock.css')
const jsPath = path.join(__dirname, './clock.js')
const resultPath = path.join(__dirname, './result.html')
// 1.读取clock.html文件的内容
let content = fs.readFileSync(htmlPath, 'utf-8')
// console.log(content);
// 2.处理文件内容
// 注意:小括号只是提取分组的一个作用
// 匹配<style></style>
const regStyle = /<style>([\s\S]*)<\/style>/
// 匹配<script></script>
const regScript = /<script>([\s\S]*)<\/script>/
// const ret = regStyle.exec(str)
// regStyle.exec方法的作用:提取字符串中符合正则的子串
// ret是一个数组
// 数组的第一项是包含style标签的整体内容
// 数组的第二项是除去style标签后里面的内容
//提取html中的css和js内容
const retStyle = regStyle.exec(content)
const retScript = regScript.exec(content)
//替换clock.html文件中的代码为链接形式
//把style中包含标签的内容,设置为链接形式,放在html页面中
content = content.replace(retStyle[0], '<link rel="stylesheet" href="clock.css">')
//把script包含标签的内容,设置为链接形式 ,放在html页面中
content = content.replace(retScript[0], '<script src="./clock.js"></script>')
// 3.把处理的结果写入对应的文件中
//写入style中不带标签 ,是第二项[1]
fs.writeFileSync(cssPath, retStyle[1], 'utf-8')
fs.writeFileSync(jsPath, retScript[1], 'utf-8')
//把替换成链接的网页写入文件
fs.writeFileSync(resultPath, content, 'utf-8')
console.log('操作成功');
总结:
步骤:
1.读取clock.html文件的内容
2.处理文件内容
3.把处理的结果写入对应的文件中正则中小括号只是提取分组的一个作用
const ret = regStyle.exec(str)
regStyle.exec方法的作用:提取字符串中符合正则的子串
ret是一个数组
数组的第一项是包含style标签的整体内容
数组的第二项是除去style标签后里面的内容