Node.js学习(二):path与http模块
1、path路径模块
1)、path.join() 方法
path.join() 方法,可以把多个路径片段拼接为完整的路径字符串。
传递参数的个数不做限制,每个参数为路径字符串的一个片段,按照传递参数的顺序进行路径拼接。
const path = require('path')
const fs = require('fs')
// ../ :返回上一级路径,会抵消掉其前面的一个路径
const fpath = path.join('/a','/b/c','../../','/e')
console.log(fpath)
fs.readFile(path.join(__dirname,'/文本/1.txt'),'utf-8',function(err,data){
if(err){
return console.log('读取文件失败'+err.message)
}
console.log('文件读取成功'+data)
})
2)、path.basename() 方法与path.extname()方法
path.basename() 方法,可以获取路径中的最后一部分,经常通过这个方法获取路径中的文件名,有两个参数。
参数一:路径,必填
参数二:文件扩展名,选填
path.extname() 方法,可以获取路径中的扩展名部分,有一个参数。填入需要获取后缀的路径,必填。
const path = require('path')
const fpath1 = 'a/b/c/index.html'
// basename()方法:用来获取路径中的文件名
// 参数一:路径,必填
// 参数二:文件扩展名,选填
const fp1 = path.basename(fpath1)
const fp2 = path.basename(fpath1,'.html')
console.log(fp1)
console.log(fp2)
// extname()方法:用来获取路径中文件后缀
const fp3 = path.extname(fpath1)
console.log(fp3)
**注意:**fs.writeFile() 方法只能用来创建文件,不能用来创建路径
2、http模块
1)、http模块需要了解的概念
客户端、服务器、IP地址、域名、端口号、域名服务器等
2)、创建基本的web服务器
// 引入http模块
const http = require('http')
// 创建web服务器实例
const server = http.createServer()
// 使用服务器实例的 .on()方法,为服务器绑定一个request事件
server.on('request', (req,res)=>{
// 只要有客户端来请求我们自己的服务器,就会触发 request 事件,从而调用这个事件处理函数
console.log('someone visit our server')
})
// 启动服务器
server.listen(8080,()=>{
console.log('server is running at http://127.0.0.1:8080')
})
3)、请求对象(req)与响应对象(res)
server.on('request',(req,res)=>{
// req是请求对象,它包含了与客户端相关的数据和属性,例如:
// req.url 是客户端请求的URL地址
// req.method 是客户端的 method 请求类型
const url = req.url
const method =req.method
const str =`Your request url is ${url},and request method is ${method}`
// res是响应对象,它包含了与服务器相关的数据和属性
// res.end()方法的作用:向客户端发送指定的内容,并结束这次请求的处理过程
res.end(str)
})
4)、根据不同的url响应不同的页面内容
const http = require('http')
const server = http.createServer()
server.on('request',(req,res)=>{
const 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>`
}
// 为了防止中文乱码的问题,需要设置响应头 Content-Type 的值为 text/html; charset=utf-8
res.setHeader('Content-Type','text/html; charset=utf-8')
res.end(content)
})
server.listen('3000',()=>{
console.log('http server is running at http://127.0.0.1:3000')
})