五. path模块
path 模块 Node.js 官方提供的用来处理路径的模块
path.join() : 将多个路径片段拼接成一个完整的路径字符串
path.basename() : 从路径字符串中将文件名解析 出来
const path = require('path')
-
path.join()
const pathStr = path.join('/a', '/b/c', '../', './d', 'e') console.log(pathStr) //输出 \a\b\d\e const pathStr2 = path.join(__dirname, './files/1.txt') console.log(pathStr2) //输出 当前文件所处目录\files\1.txt
-
path.basename()
获取路径中的最后一部分,经常通过这方法获取路径中的文件名
path.basename(path[, ext]) const fpath = '/a/b/c/index.html' var fullName = path.basename(fpath) console.log(fullName) //输出index.html var nameWithoutExt = path.basename(fpath, '.html') console.log(nameWithoutExt) //输出index
-
path.extname()
获取路径中的扩展名部分
const fpath = '/a/b/c/index.html' //路径字符串
const fext = path.extname(fpath)
console.log(fext) //输出 .html
六. http模块
-
http模块
客户端与服务器 消费资源的电脑为客户端, 对外提供网络资源的电脑 服务器
http 模块是Node.js 提供的用来创建web服务器的模块。通过http模块提供的http.createServer()方法 能方便把一台普通电脑变成一台服务器 对外提供资源
使用 需导入
const http = require('http')
-
理解 http 作用
安装了web服务软件 IIS Apache等 可成为服务器
-
Node.js中不需要 第三方 web 服务器软件,可以基于Node.js 提供的http模块 ,通过几行代码轻松手写一个 服务器软件从而对外提供web服务
-
服务器相关概念
- ip : 计算机的唯一地址 例如 192.168.2.31
互联网中的每台Web服务器都有自己的ip
例如ping www.baidu.com 可以查看到百度的ip地址
自己电脑是一个服务器也是一个客户端 127.0.0.1 /localhost就把自己当成一个服务器访问了 - 域名和域名服务器 端口
IP 地址与域名 一一对应,对应关系存放在域名服务器(DNS)中 ,域名服务器就是提供ip与域名之间相互转化
端口 每一个web服务对应一个端口号,一个端口一个服务 默认 80 端口 可以省略
- ip : 计算机的唯一地址 例如 192.168.2.31
-
创建最基本的web服务器
- 创建的步骤 :
导入http模块 --》 创建web服务实例const server = http.createServer()
–》
为服务器实例绑定request事件 监听客户端请求 --》
启动服务器//为服务器绑定request 事件 即可监听客户端发过来的网络请求 //使用服务器实例 .on()方法 为服务器绑定一个request事件 server.on('request', (req, res)=>{ //只要有客户端看来请求我们自己的服务器,就会触发request事件 从而调用这个事件处理函数 console.log('someone visit our web server') })
//调用 server.listen(端口号 ,cb回调) 方法,即可启动web服务器 server.listen(80, ()=>{ console.log('http server running <http://127.0.0.1>') })
- req 与 res 对象
只要服务器接受到了客户端的请求 就会调用通过 server.on() 为服务器绑定request事件处理函数,如果想在事件处理函数中 访问与客户端相关的数据或属性 与 访问与服务器相关的数据与属性 使用如下方式server.on('request', (req, res) => { //req 是请求对象 包含了与客户端相关的属性 // req.url 是客户端请求的url地址 //req.method 是客户端的method 请求类型 const str = 'Your request url is ${req.url}, and request method is ${req.method}' console.log(str) // res 对象 是响应对象 包含服务器相关的数据与属性 // end方法向客户端发送内容 并结束这次请求 res.end(str) }) ----------------------------------------- const http = require('http') const server = http.createServer() server.on('request', function (req, res){ console.log('浏览器 访问 http://127.0.0.1 vist web server') console.log(req.url) // / console.log(req.method) // GET res.end('server 响应内容') //浏览器 显示 'server 响应内容' }) server.listen(80, function(){ console.log('server running http://127.0.0.1') })
- 中文乱码
res.end() 发送中文时 出现乱码 此时需要手动设置内容的编码格式server.on('request', function (req, res){ //需设置响应头 res.setHeader('Content-type', 'text/html; charset=utf-8') res.end('server 响应内容') //浏览器 显示 'server 响应内容' })
- 创建的步骤 :
-
根据不同的url 响应不同的html内容
实现步骤
获取请求的url 设置默认响应内容 404 not found 判断用户请求是否为/或者/index.html首页 判断用户请求是否为 /about.html 关于页面 设置 Content-Type 响应头 中文乱码 使用 res.end() 内容响应客户端
server.on('request', function (req, res){ const url = req.url let content = '<h1>404 Not found</h1>' if(url === '/' || url === '/index.html'){ content = '<h1>index 欢迎 您</h1>' }else if(url === '/about.html'){ content = '<h1>about 关于页面</h1>' } res.setHeader('Content-type', 'text/html; charset=utf-8') res.end(content) })
微信 公众号 搜索 Brillint技术圈 回复 “文章” 查看往期技术话题