时钟案例-基于node.js的文件模块和path模块

const fs = require('fs')
const path = require('path')

//配置正则表达式
//匹配<style></style>标签和<script></script>标签
const resStyle = /<style>[\s\S]*<\/style>/  
const resScript = /<script>[\s\S]*<\/script>/  
//\s表示空字符
//\S表示任意非空字符
//*表示任意多次

//读取文件并做抽离css, script的处理
fs.readFile(path.join(__dirname, './demo/index.html'), 'utf8', function(err, dataStr){
	if (err)
	{
		return console.log('File readed fail'+ err.message)
	}
	console.log('File readed success')
	//抽取css, 并放进./clock/index.css文件
	resolveCSS(dataStr)
	resolveScript(dataStr)
	resolveHtml(dataStr)
})

//定义处理css样式的方法
function resolveCSS(htmlStr) {
	//使用正则提取需要的内容
	//正则表达式有一个方法, exec按照正则表达式来提取字符串
	const r1 = resStyle.exec(htmlStr)
	console.log(r1)
	//将提取出来的字符串做replace替换操作
	const newCss = r1[0].replace('','')
	//最后写到指定的文件
	fs.writeFile(path.join(__dirname, './clock/index.css'), newCss, function(err){
		if (err)
		{
			return console.log('css file writeed fail' + err.message)
		}
		console.log('css file writed success')
	})
}

//定义处理script的方法
function resolveScript(htmlStr) {
	//使用正则表达式提取需要的内容
	const r2 = resScript.exec(htmlStr)
	console.log(r2)
	//将提取出来的字符串做replace处理
	const newScript = r2[0].replace('', '')
	//最后写到指定的文件
	fs.writeFile(path.join(__dirname, './clock/index.js'), newScript, function(err){
		if (err)
		{
			return console.log('js file writed fail'+ err.message)
		}
		console.log('js file writed success')
	})
}

//定义处理html文件的方法
function resolveHtml(htmlStr){
	//将原来的html文件转换为新的文件, style和script使用外联方式
	const newHtml = htmlStr.replace(resStyle, '').replace(resScript, '')
	//写入到指定的文件
	fs.writeFile(path.join(__dirname, './clock/index.html'), newHtml, function(err){
		if (err)
		{
			return console.log('html file writed fail')
		}
		console.log('html writed success')
	})
}

时钟案例-基于node.js的文件模块和path模块_第1张图片
时钟案例-基于node.js的文件模块和path模块_第2张图片
时钟案例-基于node.js的文件模块和path模块_第3张图片

PS C:\Users\lyd\Documents\lea\clockdemo> node .\时钟案例.js
File readed success
[ '',
  index: 0,
  input: '\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n',
  groups: undefined ]
[ '',
  index: 74,
  input: '\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n',
  groups: undefined ]
css file writed success
js file writed success
html writed success
PS C:\Users\lyd\Documents\lea\clockdemo>



注意点:
fs写文件时, 可以创建一个文件但是不能创建一个目录
所以, fs.writeFile时一定要保证路径的真是有效性

还有就是新的内容会覆盖原来的内容

你可能感兴趣的:(node.js,node.js)