1. node.js简介
-
node.js是基于chrome浏览器v8引擎的js运行环境,用于后端开发。
-
使用node.js运行js代码的方法
- 打开终端(win + r)
- 输入node js文件所在路径
-
终端快捷键:
- 使用上方向键,快速定位上一次执行的命令
- 使用tab将快速补全文件路径
- esc键快速删除当前输入的命令
- cls命令,快速清除之前所有的命令
2. fs文件系统模块
- 读写文件
// 引入fs模块
const fs = require('fs')
// 使用readfile方法读取文件
fs.readFile('./files/11.txt', 'utf8', function(err,dataStr) {
// console.log(err)
// console.log('-------------------')
// console.log(dataStr)
if(err) {
console.log(err)
}else{
console.log(dataStr)
}
})
// 使用writefile方法写文件
fs.writeFile('./files/5.txt', '666', function(err) {
console.log(err)
})
// 成绩文件的格式修改案例
// 导入fs模块
const fs = require('fs')
// 读取成绩文件
fs.readFile('../素材/成绩.txt','utf-8',function(err,datastr) {
if(err) {
console.log(err)
}
const arrold = datastr.split(' ')
// console.log(arrold)
const arrnew = []
arrold.forEach(item => {
arrnew.push(item.replace('=',':'))
})
// console.log(arrnew)
const newstr = arrnew.join('\r\n')
// console.log(newstr)
// 将转化的内容写入文件
fs.writeFile('../素材/成绩.txt', newstr, function(err) {
if(!err) {
console.log('修改成功')
}
})
})
- 路径动态拼接的问题:在使用fs模块时,如果提供的是相对路径,容易出现路径动态拼接错误的问题。原因:代码运行时,会以执行node命令时所处的目录,动态拼接被操作文件的完整路径
- 解决方法1:使用完整路径
- 解决方法2:node提供了__dirname来表示当前文件的目录,因此被操作文件的路径可以写为__dirname + 相对路径
3. path模块
// 导入path模块
const path = require('path')
// 拼接路径
const pathstr = path.join(__dirname,'./files/1.txt')
// console.log(pathstr)
// 获取路径最后的文件名
const basename = path.basename(pathstr)
const basename1 = path.basename(pathstr,'.txt')
// console.log(basename1)
// 获取文件后缀
const extname = path.extname(pathstr)
console.log(extname)
时钟案例
// 导入fs和Path模块
const fs = require('fs')
const path = require('path')
// 定义匹配style和script的正则表达式
const regstyle = /<style>[\s\S]*<\/style>/
const regscript = /<script>[\s\S]*<\/script>/
// 读取html文件
fs.readFile(path.join(__dirname,'../素材/index.html'),'utf-8',function(err,datastr) {
if(err) return console.log('读取文件失败' + err.message)
// 执行三个方法
// console.log(1)
resolvecss(datastr)
resolvejs(datastr)
resolvehtml(datastr)
})
// 定义分离css的函数
function resolvecss(datastr) {
const cssstr = regstyle.exec(datastr)
// console.log(cssstr)
const newcss = cssstr[0].replace('<style>','').replace('</style>','')
// console.log(newcss)
// 将替换好的css样式写入index1里
fs.writeFile(path.join(__dirname,'/clock/index1.css'),newcss,function(err) {
if(err) return console.log('css写入失败' + err.message)
console.log('css写入成功')
})
}
// 定义分离js的函数
function resolvejs(datastr) {
const jsstr = regscript.exec(datastr)
// console.log(cssstr)
const newjs = jsstr[0].replace('<script>','').replace('</script>','')
// console.log(newcss)
// 将替换好的css样式写入index1里
fs.writeFile(path.join(__dirname,'/clock/index1.js'),newjs,function(err) {
if(err) return console.log('js写入失败' + err.message)
console.log('js写入成功')
})
}
// 定义分离html的函数
function resolvehtml(datastr) {
const newhtml = datastr
.replace(regstyle,'<link rel="stylesheet" href="./index1.css" />')
.replace(regscript,'<script src="./index1.js"></script>')
// console.log(newhtml)
fs.writeFile(path.join(__dirname,'/clock/index1.html'),newhtml,function(err) {
if(err) return console.log('html写入失败' + err.message)
console.log('html写入成功')
})
}