静态资源托管
静态资源:xx.css,xx.html,xx.js,xx.图片,xx.json xx.字体等
前端写页面时是用相对本地路径相对于当前正在写的页面的路径来引入外部的js,css等资源,图片的img的src属性,a标签的href属性(页面加载时不会做网络请求,这个只有当用户点击了才会做网络请求)等也是填写的相对本地路径。在后端服务器就可以将前端写页面时的这些资源的文件夹进行托管。如此在客户端用户输入网址访问到一个页面时,页面中的这些资源的路径会拼接在域名之后就变成了相对网络路径,这些文件资源就可以直接被用户访问。
let urlobj=url.parse(req.url);
let pathname=urlobj.pathname;
if(pathname=="/"){pathname="/index.html"};
let path=__dirname+"/public"+pathname;
//__dirname就是当前运行的js文件所在的文件夹就是src文件夹
//path=__dirname+"/public"+pathname-->用户输入网址做网络请求文件资源时后端服务器就可以读取到public文件夹下的文件资源,就实现了对src文件夹下的public文件夹的所有子文件夹和子文件的托管。
当客户端输入网址:"http://localhost:8086/" 后端就会发送一个数据包,这个数据包就是index.html这个文本文档,而这个文本文档的网址是"http://localhost:8086/index.html",
页面就会渲染并显示,然后浏览器在解析这个index.html文本文档时遇到link的href的属性是"./index.css"就会发起网络请求,index.html所在的文件夹就是public文件夹,这份css文件的网址是:"http://localhost:8086/index.css此时这个index.css文本文档所在的后端就会收到的req.url是"/index.css",然后后端会根据路径先找到public这份文件夹然后就找到了这份css文件就发送给客户端。这样在前端写index.html用的本地相对路径在用户访问时就变成了相对网络路径。这样用户在"http://localhost:8086/这个网址域名后面输入什么文件资源做网络请求后,后端服务器就会在public文件夹中读取相应的文件资源发送给客户端。静态资源托管时这样用户只能访问到public文件夹中的资源,不能访问public文件夹之外的文件资源。