目录
1. path 路径模块
1.1 导入path模块
1.2 path.join()路径拼接
1.3 path.basename() 获取路径中的文件名
1.4 path.extname() 获取路径中的扩展名
2.服务器的相关概念
2.1 IP 地址
2.2 域名和域名服务器
2.3 端口号
3. http 模块
3.1使用http模块搭建服务器的步骤
1. path 路径模块
path 模块是 Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。
1.1 导入path模块
path是node.js的一个内置模块,在使用前我们要进行导入操作。和fs模块的导入格式一样,使用tequire关键字引入。
let path = require('path');
1.2 path.join()路径拼接
path.join可以将多个路径片段拼接成一个完整的路径字符串。path.join方法避免了+号拼接会将. 拼上的问题 join会直接将.去掉 如果是..那就会抵消一层路径 ../../抵消两层路径。这是在node.js中路径拼接最好的一种方法。
const pathstr = path.join('/a', '/b', '/c');
console.log(pathstr); //\a\b\c
const pathstr1 = path.join('/a', '/b', './c');
console.log(pathstr1); //\a\b\c
const pathstr2 = path.join('/a', '/b', '../c');
console.log(pathstr2); //\a\c
1.3 path.basename() 获取路径中的文件名
使用 path.basename() 方法,可以获取路径中的最后一部分,经常通过这个方法获取路径中的文件名。如果写参数二的话就表示将文件的扩展名去掉,只返回文件名。
参数一: | 必选 表示一个路径的字符串 |
参数二: | 可选 表示文件扩展名 |
let fliename = path.basename('index.html');
console.log(fliename);//index.html
// 参数二:不要扩展名 可选参数
let fliename1 = path.basename('index.html','.html');
console.log(fliename1);//index
1.4 path.extname() 获取路径中的扩展名
使用 path.extname() 方法,可以获取路径中的扩展名部分,里面只包含一个参数,而且是必选参数,这个参数是一个表示路径的字符串。
let pathstr3='\a\b\c\index.html'
let ext = path.extname(pathstr3);
console.log(ext);//.html
2.服务器的相关概念
2.1 IP 地址
IP 地址就是互联网上每台计算机的唯一地址,因此 IP 地址具有唯一性。如果把“个人电脑”比作“一台电话”,那么“IP地址”就相当于“电话号码”,只有在知道对方 IP 地址的前提下,才能与对应的电脑之间进行数据通信。在开发期间,自己的电脑既是一台服务器,也是一个客户端,为了方便测试,可以在自己的浏览器中输入 127.0.0.1 这个 IP 地址,就能把自己的电脑当做一台服务器进行访问了。 (localhost)
IP 地址的格式:通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d 都是 0~255 之间的十进制整数。例如:用点分十进表示的 IP地址(192.168.1.1)。
2.2 域名和域名服务器
尽管 IP 地址能够唯一地标记网络上的计算机,但IP地址是一长串数字,不直观,而且不便于记忆,于是人们又发明了另一套字符型的地址方案,即所谓的域名(Domain Name)地址。相当于在手机上给朋友的手机号写了一个备注,你可以通过手机号(ip地址)联系朋友,也可以通过备注(域名)来联系朋友
IP地址和域名是一一对应的关系,这份对应关系存放在一种叫做域名服务器(DNS,Domain name server)的电脑中。使用者只需通过好记的域名访问对应的服务器即可,对应的转换工作由域名服务器实现。因此,域名服务器就是提供 IP 地址和域名之间的转换服务的服务器。
2.3 端口号
计算机中的端口号,就好像是现实生活中的门牌号一样。通过门牌号,外卖小哥可以在整栋大楼众多的房间中,准确把外卖送到你的手中。同样的道理,在一台电脑中,可以运行成百上千个 web 服务。每个 web 服务都对应一个唯一的端口号。客户端发送过来的网络请求,通过端口号,可以被准确地交给对应的 web 服务进行处理。
3. http 模块
http模块是一个内置模块,主要用来搭建web服务器 ,。通过 http 模块提供的 http.createServer() 方法,就能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务。 但后续真正的开发使用的是第三方express,一般不会用http模块来搭建服务器。
3.1使用http模块搭建服务器的步骤
1. 导入模块
let fs = require('fs');
let http = require('http');
2.创建一个web服务
let web = http.createServer();
3.监听请求
on( )方法里面包含了两个参数; 参数一:请求方法 参数二:回调函数 ;而回调函数中也包含了两个参数 (req, res)参数一:表示请求体,参数二:表示响应体。
(1)请求体中有一些属性我们需要了解一下:
req.url | 获取请求的 URL |
req.method | 获取请求的方法(GET、POST 等) |
(2) /表示根目录: http://127.0.0.1:8080/
(3)为了防止乱码,我们需要修改响应头中的编码: res.setHeader('Content-Type', 'text/html;charset=utf-8')
(4) res.end()是 Node.js 中用于结束响应过程的方法。当使用 Node.js 构建 HTTP 服务器时,可以通过 res.end()
来结束对客户端的响应。
web.on('request', (req, res) => {
// console.log(req);
// 请求体中有一些属性 url method
console.log(req.url, req.method);
// /表示根目录 http://127.0.0.1:8080/
// console.log('监听成功');
// 防止乱码,改响应头中的编码
res.setHeader('Content-Type', 'text/html;charset=utf-8')
if (req.url == '/') {
fs.readFile('./index.html', 'utf-8', (err, data) => {
if (err) return console.log('读取失败' + err.message);
res.end(data)
})
} else if (req.url == '/list.html') {
fs.readFile('./list.html', 'utf-8', (err, data) => {
if (err) return console.log('读取失败' + err.message);
res.end(data)
})
} else {
res.end('404找不到页面')
}
// 服务器响应
// res.end('得到回应')
});
4.启动服务
参数一: | 端口号 |
参数二: | 回调函数 |
web.listen('8080', () => {
console.log('web服务已启动 http://127.0.0.1');
})
5.关闭服务器: ctrl+c可以关闭服务器。