Node.js學(xué)習(xí)之地址解析模塊URL的使用詳解
前言
本文主要給大家介紹了關(guān)于Node.js地址解析模塊URL使用的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧。
url結(jié)構(gòu)化/模塊化/路徑解析
- 結(jié)構(gòu)化:
url.parse(urlString[, parseQueryString[, slashesDenoteHost]]) - 模塊化:
url.format(urlObject) - 路徑解析:
url.resolve(from, to)
一個(gè)URL字符串是一個(gè)結(jié)構(gòu)化的字符串包含多個(gè)有意義的組件。在解析時(shí),返回一個(gè)URL對象包含每一個(gè)組件的屬性。
官方手冊上面的一張圖是這樣子的:

這張圖解釋了一個(gè)url結(jié)構(gòu)化成哪些部分,哪些部分又包含哪些部分
protocol: 請求協(xié)議
host: URL主機(jī)名已全部轉(zhuǎn)換成小寫, 包括端口信息
auth:URL中身份驗(yàn)證信息部分
hostname:主機(jī)的主機(jī)名部分, 已轉(zhuǎn)換成小寫
port: 主機(jī)的端口號(hào)部分
pathname: URL的路徑部分,位于主機(jī)名之后請求查詢之前
search: URL 的“查詢字符串”部分,包括開頭的問號(hào)。
path: pathname 和 search 連在一起。
query: 查詢字符串中的參數(shù)部分(問號(hào)后面部分字符串),或者使用 querystring.parse() 解析后返回的對象。
hash: URL 的 “#” 后面部分(包括 # 符號(hào))
url結(jié)構(gòu)化
將一個(gè)url地址結(jié)構(gòu)化成為擁有上圖屬性的url對象。url.parse第二個(gè)和第三個(gè)參數(shù)默認(rèn)為false。
- 第二個(gè)參數(shù)決定query屬性值是字符串還是對象
- 第三個(gè)參數(shù)如果為true,//后的第一個(gè)令牌文字字符串和下一個(gè)/之間的文字字符串將被解釋為主機(jī)
例子如下
const url = require("url");
var urlstr = "http://localhost:8888/bb?name=bigbear&memo=helloworld&memo=helloC";
var urlobj = url.parse(urlstr);
console.log(urlobj);
/*
Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'localhost:8888',
port: '8888',
hostname: 'localhost',
hash: null,
search: '?name=bigbear&memo=helloworld&memo=helloC',
query: 'name=bigbear&memo=helloworld&memo=helloC',
pathname: '/bb',
path: '/bb?name=bigbear&memo=helloworld&memo=helloC',
href: 'http://localhost:8888/bb?name=bigbear&memo=helloworld&memo=helloC' }
*/
第二個(gè)參數(shù)為true時(shí)
query: { name: ‘bigbear', memo: [ ‘helloworld', ‘helloC' ] },
例子如下:
const url = require("url");
var urlstr = "http://localhost:8888/bb?name=bigbear&memo=helloworld&memo=helloC";
console.log(
url.parse(urlstr, true)
)
/*
Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'localhost:8888',
port: '8888',
hostname: 'localhost',
hash: null,
search: '?name=bigbear&memo=helloworld&memo=helloC',
query: { name: 'bigbear', memo: [ 'helloworld', 'helloC' ] },
pathname: '/bb',
path: '/bb?name=bigbear&memo=helloworld&memo=helloC',
href: 'http://localhost:8888/bb?name=bigbear&memo=helloworld&memo=helloC' }
*/
第三個(gè)參數(shù)對比
例子如下:
const url = require("url");
var urlstr = "http://foo/bar ";
console.log(
url.parse(urlstr, true,true)
)
/*
輸出:Url {
protocol: null,
slashes: true,
auth: null,
host: 'foo',
port: null,
hostname: 'foo',
hash: null,
search: '',
query: {},
pathname: '/bar',
path: '/bar',
href: '//foo/bar' }
*/
const url = require("url");
var urlstr = "http://foo/bar ";
console.log(
url.parse(urlstr)
)
/*
輸出:
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: null,
query: null,
pathname: '//foo/bar',
path: '//foo/bar',
href: '//foo/bar' }
*/
url模塊化
將一個(gè)url對象轉(zhuǎn)換成一個(gè)url字符串,url對象中的屬性為url.parse()產(chǎn)生的對象的屬性。
url.parse()和url.format()互為逆操作。
例子如下:
const url = require("url");
var Urlobj = {
protocol: 'http:',
slashes: true,
auth: null,
host: 'localhost:8888',
port: '8888',
hostname: 'localhost',
hash: null,
search: '?name=bigbear&memo=helloworld&memo=helloC',
query: { name: 'bigbear', memo: [ 'helloworld', 'helloC' ] },
pathname: '/bb',
path: '/bb?name=bigbear&memo=helloworld&memo=helloC',
}
console.log(
url.format(Urlobj)
)
//輸出:http://localhost:8888/bb?name=bigbear&memo=helloworld&memo=helloC
路徑解析:url.resolve(from, to)
url.resolve()方法解決了目標(biāo)URL相對于基本URL的方式類似于Web瀏覽器解決錨標(biāo)記href。
官方手冊例子:
url.resolve('/one/two/three', 'four');
// '/one/two/four'
url.resolve('http://example.com/', '/one');
// 'http://example.com/one'
url.resolve('http://example.com/one', '/two');
// 'http://example.com/two'
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
從零開始學(xué)習(xí)Node.js系列教程之設(shè)置HTTP頭的方法示例
這篇文章主要介紹了Node.js設(shè)置HTTP頭的方法,詳細(xì)分析了常見HTTP頭的功能、原理及相關(guān)設(shè)置操作技巧,需要的朋友可以參考下2017-04-04
Windows部署NVM并下載多版本Node.js的方法(含刪除原有Node的方法)
這篇文章主要介紹了Windows部署NVM并下載多版本Node.js的方法(含刪除原有Node的方法),文中通過圖文結(jié)合的方式講解的非常詳細(xì),對大家了解Node.js有一定的幫助,需要的朋友可以參考下2025-01-01
node項(xiàng)目使用http模塊發(fā)送get-post請求方式
這篇文章主要介紹了node項(xiàng)目使用http模塊發(fā)送get-post請求方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09
Node.js斷點(diǎn)續(xù)傳的實(shí)現(xiàn)
最近做了個(gè)項(xiàng)目,應(yīng)項(xiàng)目需求,需要傳圖片、Excel等,幾M的大小可以很快就上傳到服務(wù)器,但是大的就需要斷點(diǎn)上傳,本文就介紹一下,感興趣的可以了解一下2021-05-05

