4.2——Node.js的npm和包

② 创建 web 服务器实例
③ 为服务器实例绑定事件,监听客户端的请求
④ 启动服务器
//1.导入http模块const http = require('http')//2.创建web服务器实例const server = http.createServer()//3.为服务器实例绑定request事件,监听客户端的请求server.on('request', function(req, res){console.log("Some one visit our web server!")})//4.启动服务器server.listen(8080, function(){console.log("server running at http://127.0.0.1:8080")//如果是80则可以省略:80})
req 请求对象和res 响应对象
只要服务器接收到了客户端的请求,就会调用通过 .on() 为服务器绑定的事件处理函数 。
req包含url和,req.url是客户端请求的url地址;req.是客户端请求的类型;
res.end()方法:向客户端发生指定的内容,并结束这次请求的处理过程
//1.导入http模块const http = require('http')//2.创建web服务器实例const server = http.createServer()server.on('request', function(req, res){//req.url是客户端请求的url地址const url = req.url//req.method是客户端请求的method类型const method = req.methodconsole.log(`You request url is ${url},and request method is ${method}`)//端口号后面的地址//res.end()方法:向客户端发生指定的内容,并结束这次请求的处理过程str = `Your request url is ${url},and request method is ${method}`res.end(str)})server.listen(8080,function(){console.log("server is running at http://127.0.0.1:8080")})
解决中文乱码问题
当调用 res.end() 方法,向客户端发送中文内容的时候,会出现乱码问题,此时,需要手动设置内容的编码格式:
server.on('request',(req, res) => {//发送的内容包含中文const str =`您请求的url 地址是 ${req.url},请求的method 类型是${req.method}`//l为了防止中文显示乱码的问题,需要设置响应头Content-Type 的值为 text/html;charset=utf-8res.setHeader('Content-Type', 'text/html; charset=utf-8 ')//把包含中文的内容,响应给客户端res.end(str)})
根据不同的 url 响应不同的 html 内容
核心实现步骤
① 获取请求的 url 地址
② 设置默认的响应内容为 404 Not found
③ 判断用户请求的是否为 / 或 /index.html 首页
④ 判断用户请求的是否为 /about.html 关于页面
⑤ 设置 -Type 响应头,防止中文乱码
⑥ 使用 res.end() 把内容响应给客户端
const http = require('http')const server = http.createServer()server.on('request', function(req, res){// 1. 获取请求的 url 地址const url = req.url// 2. 设置默认的响应内容为 404 Not foundlet content = '404 not found'// 3. 判断用户请求的是否为 / 或 /index.html 首页if(url === '/' || url === '/index.html'){content = '首页'}// 4. 判断用户请求的是否为 /about.html 关于页面if(url === '/about.html'){content = '关于页面'}// 5. 设置 Content-Type 响应头,防止中文乱码res.setHeader('Content-Type','text/html; charset=utf-8')// 6. 使用 res.end() 把内容响应给客户端res.end(content)})server.listen(80, () => {console.log('server is runnig at http://127.0.0.1')})
案例——实现 clock 时钟的 web 服务器
//1.1导入http模块const http = require('http')//1.2导入fs模块const fs = require('fs')//1.3导入path模块const path = require('path')//2.1创建 web 服务器const server = http.createServer()//2.2监听web服务器的request事件server.on('request', (req, res) => {//3.1获取到客户端请求的 url 地址///sample_code/clock/index.html///sample_code/clock/index.css///sample_code/clock/index.jsconst url = req.url//3.2把请求的 url 地址映射为具体文件的存放路径const fpath = path.join(__dirname, url)//4.1根据映射过来的文件路径读取文件的内容fs.readFile(fpath,'utf8',function(err, dataStr){//4.2读取失败,向客户端响应固定的"错误消息"if(err) return res.end('404 not found')//4.3读取成功,将读取成功的内容响应给客户端res.end(dataStr)})})//2.3启动服务器server.listen(80, () => {console.log('server is running at http://127.0.0.1')})