node.js环境中的全局变量

320 阅读1分钟

全局变量 __dirname

全局变量__dirname是一个字符串 ,代表当前运行的js文件所在目录的路径(是当前运行的js文件所在的文件夹的绝对路径)

全局变量 __filename

全局变量 __filename是一个字符串,代表当前运行的js文件的路径(绝对路径)

image.png

使用__dirname实现静态网站

let http=require("http");
let fs=require("fs");
let tb=http.createServer((req,res)=>{
    console.log(req.url);  
    if(req.url=="/tb.html"){
        res.setHeader("content-Type","text/html;charset=utf8");
        fs.readFile("./tb.html",(err,data)=>{
            if(!err){
                res.end(data);
            };
        });
    }else if(req.url=="/tb.css"){
        res.setHeader("content-Type","text/css");
        fs.readFile("./tb.css",(err,data)=>{
            if(!err){
                res.end(data);
            };
        });
    }else if(req.url=="/tbico/undersjx.png"){
        res.setHeader("content-Type","image/x-icon");
        fs.readFile("./tbico/undersjx.png",(err,data)=>{
            if(!err){
                res.end(data);
            };
        });
    }else if(req.url=="/tbico/tb.png"){
        res.setHeader("content-Type","image/x-icon");
        fs.readFile("./tbico/tb.png",(err,data)=>{
            if(!err){
                res.end(data);
            };
        });
    }else if(req.url=="/favicon.ico"){
        res.setHeader("content-Type","image/x-icon");
        fs.readFile("./tbico/favicon.ico",(err,data)=>{
            if(!err){
                res.end(data);
            };
        });
    }else{
        res.end("<h1>404 Not Found</h1>");
    };  
});
tb.listen(8089);

当在客户端用浏览器地址输入网址请求这份html文件时,在解析html文件遇到img的src又会发起请求,如下就是客户端发起请求的网址所返回到后端的结果:

image.png

就是客户端需要什么文件我们就返回什么文件,根据所返回的结果我们可以将以上代码简化为

let http = require("http");
let fs = require("fs");
let tb = http.createServer((req, res) => {
    console.log(req.url);

        fs.readFile(__dirname + req.url, (err, data) => {
            if (!err) {
                res.end(data);
            };
        });
     
});
tb.listen(8089);