Node.js学习第二天
1. http模块
- 概念:用来创建web服务器的模块,提供http模块提供的http.createServer()方法,就能把一台普通的电脑,变成一台web服务器,从而对外提供web服务
1.1 http模块的使用
| const http=require('http') |
1.2 http模块的作用
服务器与普通电脑的区别
- 服务器上安装了web服务器软件,如iis,apache,通过这些服务器软件,就能把一台普通的电脑变成一台服务器
1.3 服务器的相关概念
2. 创建最基本的web服务器
2.1 创建步骤
- 导入http模块
- 创建web服务器实例
- 为服务器实例绑定request事件,监听客户端请求
- 启动服务器
2.2 导入http模块
| const http=require('http') |
2.3 创建web服务器实例
| const server=http.createServer() |
2.4 为服务器实例绑定request事件,监听客户端请求
| server.on("request",function(req,res){ |
| console.log("someone is visiting our web server") |
| }) |
2.5 启动服务器
| server.listen(80,function(){ |
| console.log("http server running at http://10.152.242.223") |
| }) |
实例
| |
| const http = require('http'); |
| |
| |
| |
| const server = http.createServer(); |
| |
| |
| |
| server.on("request", function(req, res) { |
| console.log("someone is visiting our web server"); |
| }) |
| |
| |
| |
| |
| server.listen(80, function() { |
| console.log("http server running at http://10.152.242.223"); |
| }) |

2.6 req请求对象
实例
| const http = require('http') |
| const server = http.createServer() |
| server.on("request", (req, res) => { |
| |
| |
| |
| var url = req.url; |
| |
| |
| var method = req.method; |
| |
| const str = `客户端的请求方式为${req.url},客户端的请求方式为${method}`; |
| |
| console.log(str); |
| }) |
| |
| server.listen(80, () => { |
| console.log("http server running at http://10.152.242.223"); |
| }) |




2.7 res响应对象
- 在服务器的request事件处理函数中,如果想访问与服务器相关的数据和属性,可以使用如下方式
示例
| const http = require('http') |
| |
| const server = http.createServer() |
| |
| server.on("request", (req, res) => { |
| |
| var str = `你请求的url地址为${req.url},请求方式为${req.method}` |
| |
| |
| |
| res.setHeader('Content-Type', 'text/html; charset=utf-8') |
| |
| res.end(str); |
| }) |
| |
| server.listen(80, () => { |
| console.log("http server running at http://10.152.242.223"); |
| }) |

2.8 中文乱码问题

| res.setHeader('Content-Type', 'text/html; charset=utf-8') |
| const http = require('http') |
| |
| const server = http.createServer() |
| |
| server.on("request", (req, res) => { |
| |
| var str = `你请求的url地址为${req.url},请求方式为${req.method}` |
| |
| |
| |
| res.setHeader('Content-Type', 'text/html; charset=utf-8') |
| |
| res.end(str); |
| }) |
| |
| server.listen(80, () => { |
| console.log("http server running at http://10.152.242.223"); |
| }) |
2.9 根据不同的url响应不同的html内容

示例
| const http = require('http') |
| |
| const server = http.createServer() |
| |
| server.on("request", (req, res) => { |
| |
| |
| var url = req.url; |
| |
| |
| let content = "<h1>404 not found!</h1>" |
| |
| |
| if (url === "/" || url === "/index.html") { |
| content = '<h1>首页</h1>' |
| } else if (url === '/about.html') { |
| content = '<h1>关于页面</h1>' |
| } |
| |
| |
| |
| res.setHeader("Content-Type", "text/html; charset=utf-8"); |
| |
| |
| |
| res.end(content) |
| |
| }) |
| |
| server.listen(80, () => { |
| console.log("http server running at http://10.152.242.223"); |
| }) |

2.10 实现clock时钟的web服务器


| |
| |
| const fs = require('fs') |
| const http = require('http') |
| const path = require('path') |
| |
| |
| |
| var server = http.createServer() |
| |
| server.on("request", (req, res) => { |
| var url = req.url; |
| |
| |
| var pathStr = ''; |
| if (url === "/") { |
| |
| pathStr = path.join(__dirname, "/clock/index.html"); |
| } else { |
| |
| pathStr = path.join(__dirname, "/clock", url); |
| } |
| |
| fs.readFile(pathStr, (err, datastr) => { |
| if (err) { |
| |
| return res.end("404 not found!") |
| } else { |
| |
| res.end(datastr); |
| } |
| }) |
| |
| }) |
| |
| |
| |
| server.listen(80, () => { |
| console.log("http server running at http://10.152.242.223"); |
| }) |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!