//导入需要的模块
// 声明一个变量接收了http处理web服务模块
const http = require("http");
// 声明一个变量接收了fs处理文件系统模块
const fs = require("fs");
// 声明一个变量接收了path处理路径模块
const path = require("path");
//http操作创建web服务
//声明变量server接收http模块方法中的web服务器实例
const server = http.createServer();
//为web服务器实例的on对象绑定一个request事件,然后设置一个处理函数可以拿到参数:req,res
//req是客户端请求的对象的形参,里面包含客户端相关的属性和数据
//res是响应对象,在客户端请求后服务器通过res响应数据或属性给客户端
server.on("request", (req, res) => {
//接收用户端请求req中的url地址
const url = req.url;
// 优化客户端请求的url路径
//let fpath='';
//把客户端请求过来的URL地址映射为具体文件的存放路径
//原理就是拼接用户请求过来的req里的url地址
const fpath = path.join(__dirname, url);
// 然后调用fs文件处理模块根据上面拼接的url获取文件判断是否获取成功则响应到客户端
//根据映射过来的文件路径读取文件内容
fs.readFile(
fpath,
/*"utf8", 发现取消utf8后图片才能正常显示*/ (err, dataStr) => {
//判断是否读取失败,失败则通过res响应错误的信息404
if (err) return res.end("404 请求的页面不存在...");
//判断没有读取失败则响应读取的内容到客户端
res.end(dataStr);
}
);
//设置默认的响应内容为:404 没有找到请求的内容
//let content = "<h1>404 没有找到请求的内容...</h1>";
//页面判断操作
//判断用户请求的url是否为/或index.html首页
//判断用户请求的url是否为about.html首页
//if (url === "/" || url === "/index.html") {
// content = "<h1>首页</h1>";
//} else if (url === "/about.html") {
// content = "<h1>关于页</h1>";
//}
//响应操作
//接收客户端请求req中的method类型
const method = req.method;
//接收客户端请求过来的url地址与method类型
//${}是一种占位符
const str_url = `正在请求的url地址是:${url}`;
const str_method = `\n正在请求的method类型是: ${method}`;
//调用res中的setHeader方法解决响应中文数据到客户端乱码的问题
//第一个参数为响应头:"Content-Type"值是:"text/html;charset=utf-8"
//但是在响应html文件时使用后丢失html里的css与js
//res.setHeader("Content-Type", "text/html; charset=utf-8");
//在控制台输出客户端请求的url地址和method类型
console.log(str_url, str_method);
//调用res.end()方法:向客户端发送指定的数据内容,并结束这次请求的处理过程
//向客户端发送str的文本内容
//根据客户端请求的数据响应对应的html内容
//res.end(`服务器响应过来的数据:<br>${str_url}<br>${str_method}<br>${content}`);
console.log("服务器运行正常...");
});
//启动服务器
server.listen(9999, () => {
console.log("web服务器已启动...");
//在控制台输出可以访问当前wbe服务的域名IP和端口
console.log("访问该服务器的IP域名和端口为: http://xxxxxxxxxx.com:9999");
});
node学习笔记1.0
最新推荐文章于 2024-10-02 23:04:10 发布