当前位置:网站首页>2.nodejs--路径(_dirname,_filname)、url网址、querystring模块、mime模块、各种路径(相对路径)、网页的加载(面试题*)
2.nodejs--路径(_dirname,_filname)、url网址、querystring模块、mime模块、各种路径(相对路径)、网页的加载(面试题*)
2022-07-29 02:50:00 【爱喝珍珠奶茶】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
目录
(1)querystring.parse(str, [sep], [eq], [options])
(2)querystring.stringify(obj, [sep], [eq])
(1)mime.getExtension()可以通过路径返回资源类型
(2) mime.getType()可以通过路径返回资源类型
1.路径(_dirname,_filname)
_dirname,_filnam都是全局变量
(1) __dirname
是一个字符串,代表当前js文件所在目录的路径(绝对路径)
__dirname:返回当前模块文件解析过后所在的文件夹(目录)的绝对路径
使用__dirname变量获得当前文件所在目录的完整目录名__dirname等同于path.dirname(__filename)
(2)__filename
是一个字符串,代表当前js文件的路径(绝对路径)
__filename:返回当前模块文件被解析过后的绝对路径,
使用__filename变量获取当前模块文件的带有完整绝对路径的文件名
2.url网址
网址的组成: 协议://ip:port/pathname?querystring#hash
域名 ==>DNS解析 会把域名解析为一个ip port
程序例如:
var url=require("url") var str="http://www.baidu.com/20220728/news/page1/index.html?count=20&maxid=123456" var obj=url.parse(str) console.log(obj);运行结果:
3.querystring模块
(1) querystring从字面上的意思就是查询字符串,一般是对http请求所带的数据进行解析。querystring模块只提供4个方法。
(2)querystring参数解析为一个对象
(3)querystring模块用于实现URL参数字符串与参数对象的互相转换
(1)querystring.parse(str, [sep], [eq], [options])
parse这个方法是将一个字符串反序列化为一个对象。
querystring.parse(str, [sep], [eq], [options])------将一个 query string 反序列化为一个对象。可以选择是否覆盖默认的分割符('&')和分配符('=')。
案例:
var querystring=require("querystring") var obj=querystring.parse("username=jack&count=20&maxid=123456") console.log(obj)运行结果:
(2)querystring.stringify(obj, [sep], [eq])
------序列化一个对象到一个 query string。
可以选择是否覆盖默认的分割符('&')和分配符('=')。
举例:
var querystring=require("querystring") var str2=querystring.stringify({name:"jack",age:20}) var str3=JSON.stringify({name:"jack",age:20}) console.log(str2); console.log(str3);运行结果:
![]()
4.mime模块
mime是一个互联网标准,通过设定它就可以设定文件在浏览器的打开方式
(1)mime.getExtension()可以通过路径返回资源类型
举例:
var mime=require("mime") var re=mime.getExtension("text/css") console.log(re)运行结果:
(2) mime.getType()可以通过路径返回资源类型
举例:
var mime=require("mime") var re2=mime.getType("htpp://2342354345:8080/css/sadfsdgfdfg.ttf") console.log(re2)运行结果:
5.各种路径(相对路径)
(1)本地相对路径
例如:在页面中写路径: file://x1/x2/x2/index.html
"./src/18.jpg" 写这个路径的文件的页面是在本地打开的==> file://x1/x2/x2/src/18.jpg
"src/18.jpg" 写这个路径的文件的页面是在本地打开的 ==> file://x1/x2/x2/src/18.jpg
"file://c:/"
(2)本地绝对路径
从根盘符开始写路径
例如:"C:/Windows/ASUS/Shortcuts"
(3)相对网络路径
例如:
当前页面的网址: "协议://ip:port /src/news/index.html querystring hash"
页面内部的路径:
"./src/18.jpg" ==> "协议://ip:port /src/news/src/18.jpg"
"src/18.jpg" ==> "协议://ip:port /src/news/src/18.jpg"
思考1:
用户输入网址:"http://192.168.6.60:8080/user/20220728/newspage.html?n=20"
打开了一个页面,在这个页面中有一个img的src是 : "./src/18.jpg"
请问192.168.6.60:8080这个服务器会受到req.url是什么?
答: "/user/20220728/src/18.jpg"
思考2:
用户输入网址:"http://192.168.6.60:8080/user/20220728/newspage"
打开了一个页面,在这个页面中有一个img的src是 : "./src/18.jpg"
请问192.168.6.60:8080这个服务器会受到req.url是什么?
答: "/user/20220728/src/18.jpg"
它真正的网址:"http://192.168.6.60:8080/user/20220728/src/18.jpg"
(4)绝对网络路径
"协议://ip:port /src/news/src/18.jpg"
易错思考:
用户输入网址: http://192.168.6.60:8080/user/20220728/newspage
打开了一个页面,在这个页面中有一个img的src是 : "192.168.6.60:8080/src/18.jpg"
请问192.168.6.60:8080这个服务器会受到req.url是什么?
答: "/user/20220728/192.168.6.60:8080/src/18.jpg"
它真正的网址:"http://192.168.6.60:8080/user/20220728/192.168.6.60:8080/src/18.jpg"
(5)本地相对根路径
思考:用户本地打开: "file:///c:/xx/xx2/index.html"
页面中有一个img的src是 : "/src/18.jpg"
它真正的路径:"file:///c:/src/18.jpg"
(6)网络相对根路径
思考:
用户输入网址: http://192.168.6.60:8080/user/20220728/newspage
打开了一个页面,在这个页面中有一个img的src是 : "/src/18.jpg"
请问192.168.6.60:8080这个服务器会受到req.url是什么?
答:"/src/18.jpg"
它真正的网址:"http://192.168.6.60:8080/src/18.jpg"
6.网页的加载(面试题*)
1.浏览器是怎么加载网页的?
==>
(1.1)浏览器的地址栏,输入网址,敲回车,会请求一次服务器,服务器会返回一个数据包,就是网页代码(html格式的文本文档)。
(1.2)浏览器开始去运行解析html文本(此时还没有外部图片,js,css,字体库资源)
(1.2.1)解析时,遇到了img标签的src属性,会异步的,开始再次网络请求服务器,服务器返回数据包(图片编码)然后渲染出来
(1.2.2)解析时,遇到了link-href会异步的,开始再次网络请求服务器,服务器返回数据包(css编码),然后加载。
(1.2.3)解析时,xxxx-url会异步的,开始再次网络请求服务器,服务器返回数据包(对应编码)然后加载。
(1.2.4)解析时,script-src会异步的,开始再次网络请求服务器,服务器返回数据包(js编码),然后用js引擎去执行编码。
(1.3 )所有资源加载完毕了,才会触发window.onload
边栏推荐
- Day 5 experiment
- Pgzero飞机大战
- [opencv] use OpenCV to call mobile camera
- 【npm错误】- npm ERR code ERESOLVE 和 npm ERR ERESOLVE could not resolve 问题
- C语言:空心正方形图案
- R语言ERROR: compilation failed for package ‘****‘
- Comic algorithm_ Xiaohuihui interview
- VASP calculation task error: M_ divide:can not subdivide 8 nodes by 6
- C#从网址异步获得json格式的数据
- My approval function of conference OA project
猜你喜欢

第2章 VRP命令行

MySQL - count(字段)、count(主键)、count(1)、count(*)的区别

融云 IM & RTC 能力上新盘点

sqlilabs less-32~less-33

JVM基础入门篇一(内存结构)

Analysis of Project-based Learning Creativity in steam Education

R语言ERROR: compilation failed for package ‘****‘

VASP calculation task error: M_ divide:can not subdivide 8 nodes by 6

Interpreting AI robots' pet raising and leading fashion trends

Analyzing the subjective consciousness of emotional resonance between robots and human beings
随机推荐
Weekly recommended short videos: how to make product development more effective?
My approval function of conference OA project
Some new ideas about time complexity
Cloud development pocket toolbox wechat applet source code
DHCP协议详细解析
seed 随机种子
关于时间复杂度的一些新认识
[QNX hypervisor 2.2 user manual]9.11 RAM (under update)
sqlilabs less-32~less-33
HTB-Blocky
MySQL - the difference between count (field), count (primary key), count (1), count (*)
Cloud development workers must go to work fishing and paddling wechat applet source code
Navicat new database
Mongodb index (3)
融云 IM & RTC 能力上新盘点
Linux下安装MySQL8.0的详细步骤
常用hooks总结
Multi table (Association) query of SQL query data
cuda-gdb提示:/tmp/tmpxft_***.cudafe1.stub.c: No such file or directory.
Jinshan cloud returns to Hong Kong for listing: Hong Kong stock rush of Chinese to B cloud manufacturers



