第二天学习后端——__dirname、__filename、静态页面、网页怎么形成的

204 阅读2分钟

在node.js环境中,有两个全局变量__dirname__filename

1.它们保存的是字符串

2.__dirname:表示当前js文件所在的目录:绝对路径 文件夹(directory)

__filename:当前js文件的目录:绝对路径

3.使用:经常利用字符串的拼接+,拼出一个绝对路径,当我们使用fs模块fs.readFile(path,(err,data)=>{})读取文件时,path通常是绝对路径。

让我们打印一下:

image.png

代码运行结果如下:

image.png

通过了解上面的结果,我们一般req.url前面拼接上__dirname,代表着文件所在绝对路径。

index.js文件: image.png

index.html文件:

image.png

代码运行结果:

image.png

静态页面:

image.png

注意:当我们在index.html文件中添加一个img标签,我们会发现浏览器一直在加载中,没有办法停止转圈。

image.png

这是因为后端并没有发送将图片发送给前端,所以前端加载不出来,让我们打印req.url看一下网络请求的结果吧

image.png

我们可以看到服务器做了两次网络请求,但是我们的后端只写了一个网址,所以在做第二个网络请求时,浏览器一直都在加载中,因为它没有找到这个网址。

让我们把这个第二个网址写上去,看一下结果吧:

image.png

image.png

我们再为index.html文件的字体加点样式:

index.html文件:

image.png

index.css文件:

image.png

index.js文件:

image.png

代码运行的结果:

image.png

image.png

从上面的index.js文件,我们找出规律:

 if (req.url == "/index.html") {
 
    fs.readFile(__dirname + "/src" + "/index.html", (err, data) => {
    
        res.end(data)
    })

}

我们可以直接改为:

 fs.readFile(__dirname + "/src" + req.url, (err, data) => {
 
   res.end(data)
   
 })

这样,我们就可以省去很多的重复代码。

总结:

1.一个网页的资源不是由一个网址组成的,它是网页内部在运行代码的过程中,会再去请求各种各样的资源,来组成这个网页。

2.一个网页是由多次网络请求加载,形成的

2.在http协议中,网络请求是独立的,每次请求完,就断开链接。

3.前端请求服务器和服务器请求后端的次数是不一样的,因为,前端请求服务器时,可能也在请求其他后端的网址

前端请求后端:

1.index.html

2.index.css

3.img

4.img(百度的图片)

5.favicn.ico(前端默认请求小图标)

image.png

服务器请求后端:

 1.index.html
 
 2.index.css
 
 3.img
 
 4.favicn.ico
 

image.png

运行结果:

image.png