系统模块:读取/写入文件模块
读取文件的第三方模块
引入文件模块API
let fs = require("fs") //不用写绝对路径
1.读取文件: 获得读取的文件内的所有代码
fs.readFile(path.join(__dirname,"读取文件的路径"), utf - 8, (err, doc) => {
//1.读取文件之后执行回调函数
//2.err:错误(文件读取成功err为null,如果读取失败则为错误信息)
//3.doc:存储的是被打开文件内容,所有代码
if (err == null) {
consolu.log(doc)
} else {
consolu.log(err)
}
})
错误日志:向JS文件中写入错误日志
- 具体用法未知,需要实际案例支撑
2.向JS文件中写入内容, eg: 当程序报错时向日志JS文件中写错误信息
fs.writeFile(path.join(__dirname,"读取文件的路径"), "写入的内容", (err) => {
//1.写入文件的路径.js如果不存在,会在路径处创建一个js文件
if (err == null) {
consolu.log("文件写入成功")
} else {
consolu.log(err)
}
})
静态资源响应:服务器不需要处理,可以直接响应给客户端的资源
1.css,js, image文件
2.专门放一个文件夹放静态资源文件,当客户端请求某个静态资源文件时,服务端直接响应给客户端
3.浏览器地址栏并不是服务器内真实路径,可以省略一部分内容
//创建静态文件
1.服务器中创建一个static空文件夹
2.static内部创建public文件夹,将html / css / js / img文件拷贝到此文件夹内
3.public内部创建app.js文件,创建网站服务器,并且实现静态网站访问功能
const mime = require("mime")
const http = require("http")
const app = http.creatServer()
app.on(request, (req, res) => {
//1.获取请求路径
var pathname = url.parse(req.url).pathname
//2.用获得的浏览器路径拼接存文件的真实路径
var realpath = path.join(__dirname, "public" + pathname) //注意逗号
//4.获取资源类型
let type1 = mine.getType(realpath)
//3.读取html文件,并且响应给客户端
fs.readfile(realpath, (error, result) => {
//1.读取成功:error为空,result为读取的内容
//2.读取失败:error为错误对象,result为空
if (error != null) {
//设置编码
res.writeHead(404, () => {
"content-type: text / html"
})
res.end("提示文件读取失败")
return
}
else if (error = null) {
//编码问题:读取html文件时,html文件有utf-8
//设置200请求
res.writeHead(200, () => {
"content-type": type1 //因为html文件中什么形式都可能存在,不能写成固定的,引入mine模块解决问题(上方4)
})
res.end(result) //返回给客户端读取的文件
}
})
})
app.listen(3000)