引入
在node.js环境中 有两个全局变量: __dirname 和 __filename
1. 他们保存的是字符串
2. __dirname 当前js文件所在目录:绝对路径
__filename 当前js文件的目录:绝对路径
网址的组成
网址是由: 协议://ip:port/pathname?querystring#hash 组成的
例如:https://www.baidu.com/?tn=02003390_42_hao_pg
网址可以通过parse() 解析为对象,其中有两个参数:pathname和 querystring
url模块
就是网址解析之后的pathname属性值;
可以把url网址解析为一个对象
var fs = require("fs")
var http = require("http")
var url = require("url")
var app = http.createServer((req,res) => {
console.log(req.url)
var path = url.parse(req.url).pathname
fs.readFile(__dirname + path, (err, data) => {
res.end(data)
})
})
app.listen(8081)
假设:上面你输入的网址是:http://123.123.1.23:8081/index.html?count=12&pwd=123
那么你得到的pathname值就是 /index.html
querystring模块
就是网址解析之后的querystring属性值;
可以把querystring参数解析为一个对象
var querystring = require("querystring")
var obj = querystring.parse("username=xiaozhang&count=20&maxid=123456")
console.log(obj);
也可以将对象转为querystring字符串:
var querystring = require("querystring")
var str2=querystring.stringify({name:"xiaozhang",age:20})
console.log(str2);
mime模块
可以通过mime.getType()来判断输入网址的文件的类型,从而来根据网址数据设置类型:
也可以用mime.getExtension() 来获取你输入的类型:
但是mime是外部资源模块,需要自行下载,在小黑窗输入 npm i mime 来下载安装此模块
var mime=require("mime")
var re=mime.getExtension("text/css")
console.log(re)
var re2=mime.getType("htpp://123.123.12.3:8080/css/index.html")
console.log(re2)
比如下面的实例:
var mime=require("mime")
var url=require("url")
var querystring=require("querystring")
var http=require("http")
var fs=require("fs")
var app = http.createServer((req,res) => {
let urlobj = url.parse(req.url)
let pathname = urlobj.pathname
let path = __dirname + pathname
fs.readFile(path,(err,data) => {
if (!err) {
// 获取当前访问网址的文件类型
let type1 = mime.getType(path)
res.setHeader("conten-Type",type1)
res.end(data)
}else {
res.end("404")
}
})
})
app.listen(8081)
无论你设置什么类型的网址,它都能根据你输入的网址类型来给你设置相对应的头部。