node 文件操作
node 读取文件内容
// 引入文件模块
let fs = require("fs")
// 读取文件内容
/*
参数
1.(必选) 要读取的文件路径
2.(可选) 编码方式及其他
3.回调函数 回调函数有收到俩个参数,是错误和文件内容
*/
fs.readFile("../三栏布局.txt",function(err,file){
console.log(err);
console.log(file.toString());
})
node 写入文件
let fs = require("fs")
// fs.writeFile 方法向文件中写入内容,路径正确文件不存在会自动创建,路径不正确报错
/**
* 参数
* 1.要写入的文件路径
* 2.要写入的内容
* 3.编码方式及其他
* 4.回调函数
* */
fs.writeFile("./2.txt","我爱你",function(err,file){
if(!err){
console.log(file);
}else{
console.log(err);
}
})
node 实现成绩整理案例
需求:将chengji.txt
a=100 b=90 c=80 d=70
整理为
a:100 b:90 c:80 d:70
代码实现
let fs = require("fs")
fs.readFile("./chengji.txt",function(err,file){
if(err){
console.log("出错了"+err);
}else{
let newArr = []
file.toString().split(" ").forEach(item => {
newArr.push(item.replace('=',':'))
})
const newStr = newArr.join('\r\n')
fs.writeFile('./newChengji.txt',newStr,function(err){
if(!err){
console.log("写入成功!");
}else{
console.log(err);
}
})
}
})
node path
path.join方法
由于在读写文件时写相对路径会存在问题,用绝对路径解决代码可移植性差可使用该方法
let path = require('path')
let fs = require('fs')
// 该方法用于拼接路径
let str = path.join('/a','/b','/c')
console.log(str); // /a/b/c
// __dirname表示当前文件所在目录
fs.readFile(path.join(__dirname,'chengji.txt'),function(err,file){
if(err){
console.log(err);
}else{
console.log(file.toString());
}
})
path.basename方法
let path = require("path")
let str = "./a/b/n/index.html"
/**
* 参数
* 1.路径字符串
* 2.文件后缀(可选 加该参数可以去掉文件后缀 ) */
let newstr = path.basename(str,'.html')
console.log(newstr);
// 可以获得路径文件的后缀
let hz = path.extname(str)
console.log(hz);
内嵌的html文件实现代码分离
需求:将test.html分离为js css html三个文件不影响功能
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
.box{
width: 300px;
height: 200px;
margin: 100px auto;
border-radius: 8px;
background-color: pink;
}
</style>
</head>
<body>
<div class="box"></div>
<script>
let box = document.querySelector(".box")
setInterval(()=>{
box.innerText = box.innerText + "l love you !"
},3000)
</script>
</body>
</html>
代码实现
let fs = require("fs")
let path = require("path")
// 匹配正则
let pipeiScript = /<script>[\s,\S]*<\/script>/
let pipeiStyle = /<style>[\s,\S]*<\/style>/
// 读取文件
fs.readFile(path.join(__dirname, "./text.html"), 'utf8', function (err, file) {
if (err) {
return console.log("读取失败" + err);
}
// 分离script的方法
function fengliScript(fileStr) {
let a = pipeiScript.exec(fileStr)
let res = a[0].replace('<script>','').replace('</script>','')
fs.writeFile(path.join(__dirname,"./daimafengli/script.js"),res,function(err){
if(err){
return console.log("script文件写入失败!"+ err);
}
else{
console.log("script文件写入成功!")
}
})
}
// 分离Style方法
function fengliStyle(fileStr) {
let a = pipeiStyle.exec(fileStr)
let res = a[0].replace('<style>','').replace('</style>','')
fs.writeFile(path.join(__dirname,"./daimafengli/style.css"),res,function(err){
if(err){
return console.log("style文件写入失败!"+ err);
}
else{
console.log("style文件写入成功!")
}
})
}
// 分离Html方法
function fengliHtml(fileStr) {
let res = fileStr.replace(pipeiStyle.exec(fileStr)[0],'<link rel="stylesheet" href="./style.css">').replace(pipeiScript.exec(fileStr)[0],' <script src="./script.js"></script>')
fs.writeFile(path.join(__dirname,"./daimafengli/html.html"),res,function(err){
if(err){
return console.log("html文件写入失败!"+ err);
}
else{
console.log("html文件写入成功!")
}
})
}
fengliScript(file)
fengliStyle(file)
fengliHtml(file)
})
node http
node实例一个服务
// 导入http模块
let http = require('http')
// 创建服务器实例
let server = http.createServer()
// 绑定事件
server.on('request',(req,res)=>{
console.log("服务器被请求!");
})
// 开启服务器
server.listen(8000,()=>{
console.log("服务器开启,8000端口监听中~~~");
})
req和res参数
req可以获得客户端请求的信息
req.url获取客户端请求的地址
req.method可以获得客户端请求的方式
res.end可以设置响应
res.setHeader可以设置响应头
node 响应乱码解决
响应中文会出现乱码问题
解决办法加一下响应头:
res.setHeader('Content-type','text/html;charset=utf-8')
const http = require("http")
const server = http.createServer()
server.on('request',(req,res)=>{
console.log(`请求的地址时${req.url},请求的方式时${req.method}`);
res.setHeader('Content-type','text/html;charset=utf-8')
res.end('我爱你')
})
server.listen(8000,()=>{
console.log("服务已经启动,8000端口监听中~~");
})
node开启一个响应网页的服务
let fs = require('fs')
let path = require('path')
let http = require('http')
// 创建服务实例
const server = http.createServer()
// 绑定事件
server.on("request",(req,res)=>{
console.log("服务器被请求!");
const url = req.url //获取用户输入的地址
let fpath = ''
if(url == "/"){ //当请求根目录时定位到网页所在目录
fpath = path.join(__dirname,"./daimafengli/html.html")
}else{
fpath = path.join(__dirname,'/daimafengli',url)
}
fs.readFile(fpath,'utf8',(err,data)=>{
if(err) return console.log('读取失败!'+err);
res.end(data)
})
})
// 开启服务
server.listen(8000,()=>{
console.log("服务开启成功,8000端口监听中~~");
})