国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
url
parse(urlString, parseQueryString, slashesDenoteHost)
format(urlObject)
resolve(from, to)
querystring
parse(str, sep, eq, options)
stringify(obj, sep, eq, options)
首頁 web前端 js教程 聊聊Node中的url模塊和querystring模塊

聊聊Node中的url模塊和querystring模塊

Feb 23, 2023 pm 07:39 PM
前端 node.js 面試

聊聊Node中的url模塊和querystring模塊

url模塊和querystring模塊是非常重要的兩個(gè)URL處理模塊。在做node服務(wù)端的開發(fā)時(shí)會(huì)經(jīng)常用到。

url

在介紹url模塊之前我們先來一張圖,看懂了這張圖對(duì)于url這個(gè)模塊你就基本上沒什么問題了。

image.png

我們來解釋下各自的含義

  • protocol:協(xié)議,需要注意的是包含了:,并且是小寫的?!鞠嚓P(guān)教程推薦:nodejs視頻教程編程教學(xué)
  • slashes:如果:后面跟了兩個(gè)//,那么為true。
  • auth:認(rèn)證信息,如果有密碼,為usrname:passwd,如果沒有,則為usrname。注意,這里區(qū)分大小寫。
  • host:主機(jī)名。注意包含了端口,比如ke.qq.com:8080,并且是小寫的。
  • hostname:主機(jī)名,不包含端口,并且是小寫的。
  • port: 端口號(hào)。
  • path:路徑部分,包含search部分。
  • pathname:路徑部分,不包含search部分。
  • search:查詢字符串,注意,包含了?,此外,值是沒有經(jīng)過decode的。
  • query:字符串 或者 對(duì)象。如果是字符串,則是search去掉?,其余一樣;如果是對(duì)象,那么是decode過的。
  • hash:哈希部分,注意包含了#。
  • href:原始的地址。不過需要注意的是,protocol、host會(huì)被轉(zhuǎn)成小寫字母。

下面我們來講解下它的三個(gè)常用方法

parse(urlString, parseQueryString, slashesDenoteHost)

該方法將url字符串,解析成object,便于開發(fā)者進(jìn)行操作。

const url = require("url");

const str = "http://user:password@randy.com:8080/index.html?nick=%E4%B8%AD%E6%96%87#part=1";

const obj = url.parse(str);
console.log(obj);

輸出

image.png

該方法還支持傳遞另外兩個(gè)參數(shù),parseQueryStringslashesDenoteHos

parseQueryString:(默認(rèn)為false)如為false,則urlObject.query為未解析的字符串,比如nick=%E4%B8%AD%E6%96%87,且對(duì)應(yīng)的值不會(huì)decode;如果parseQueryString為true,則urlObject.queryobject,比如{ nick: '中文' },且值會(huì)被`decode;

const url = require("url");

const str = "http://user:password@randy.com:8080/index.html?nick=%E4%B8%AD%E6%96%87#part=1";

const obj2 = url.parse(str, true);
console.log(obj2);

image.png

slashesDenoteHos:(默認(rèn)為false)如果為true,那么類似//randy/nick里的randy就會(huì)被認(rèn)為是hostname;如果為false,則randy被認(rèn)為是pathname的一部分。

光看起來可能不太理解這句話的含義,下面筆者舉個(gè)例子我相信你們就明白了。

const str2 = "//randy/nick";

const obj3 = url.parse(str2, true, false);
console.log(obj3);
const obj4 = url.parse(str2, true, true);
console.log(obj4);

image.png

format(urlObject)

這個(gè)方法就是parse的反向操作。將對(duì)象轉(zhuǎn)成url字符串。

const pathObj = {
  protocol: "http:",
  slashes: true,
  auth: "user:password",
  host: "randy.com:8080",
  port: "8080",
  hostname: "randy.com",
  hash: "#part=1",
  search: "?nick=%E4%B8%AD%E6%96%87",
  query: "nick=%E4%B8%AD%E6%96%87",
  pathname: "/index.html",
  path: "/index.html?nick=%E4%B8%AD%E6%96%87",
  href: "http://user:password@randy.com:8080/index.html?nick=%E4%B8%AD%E6%96%87#part=1",
};

console.log(url.format(pathObj)); // http://user:password@randy.com:8080/index.html?nick=%E4%B8%AD%E6%96%87#part=1

resolve(from, to)

該方法用于解析相對(duì)于基本URL的目標(biāo)URL。

console.log(url.resolve("/one/two/three", "four")); // /one/two/four
console.log(url.resolve("http://example.com/", "/one")); // http://example.com/one
console.log(url.resolve("http://example.com/one", "/two")); // http://example.com/two
console.log(url.resolve("http://example.com/one/ddd/ddd/ddd", "./two")); // http://example.com/one/ddd/ddd/two
console.log(url.resolve("http://example.com/one/ddd/ddd/ddd", "../two")); // http://example.com/one/ddd/two
console.log(url.resolve("http://example.com/one/ddd/ddd/ddd", ".../two")); // http://example.com/one/ddd/ddd/.../two

querystring

querystring這個(gè)模塊,也是用來做url查詢參數(shù)的解析。這里我們重點(diǎn)分析下它的parsestringify兩個(gè)方法。

parse(str, sep, eq, options)

parse是將查詢字符串轉(zhuǎn)成對(duì)象類型,并且也會(huì)decode。

const querystring = require("querystring");

const str = "nick=randy&age=24&nick2=%E4%B8%AD%E6%96%87";
const obj = querystring.parse(str);
console.log(obj); // { nick: 'randy', age: '24', nick2: '中文' }

下面我們?cè)賮砜纯此牡诙偷谌齻€(gè)參數(shù)。其實(shí)相當(dāng)于可以替換&、=為自定義字符,下面筆者舉個(gè)例子就很快明白了。

const str1 = "name-randy|country-cn";
const obj1 = querystring.parse(str1);
console.log(obj1); // { 'name-randy|country-cn': '' }
const obj2 = querystring.parse(str1, "|", "-");
console.log(obj2); // { name: 'randy', country: 'cn' }

相當(dāng)于把&替換成了|,把=替換成了-。筆者感覺配到這種情況應(yīng)該不多。

stringify(obj, sep, eq, options)

這個(gè)方法就是上面parse的反向操作。下面咱們直接上例子

const obj3 = {
  nick: "randy",
  age: "24",
};
const str4 = querystring.stringify(obj3);
console.log(str4); // nick=randy&age=24

這個(gè)方法也是支持自定義分割符的。

const obj5 = {
  name: "randy",
  country: "cn",
};
const str6 = querystring.stringify(obj5, "|", "-");
console.log(str6); // name-randy|country-c

更多node相關(guān)知識(shí),請(qǐng)?jiān)L問:nodejs 教程!

以上是聊聊Node中的url模塊和querystring模塊的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1600
29
PHP教程
1502
276
PHP與Vue:完美搭檔的前端開發(fā)利器 PHP與Vue:完美搭檔的前端開發(fā)利器 Mar 16, 2024 pm 12:09 PM

PHP與Vue:完美搭檔的前端開發(fā)利器在當(dāng)今互聯(lián)網(wǎng)高速發(fā)展的時(shí)代,前端開發(fā)變得愈發(fā)重要。隨著用戶對(duì)網(wǎng)站和應(yīng)用的體驗(yàn)要求越來越高,前端開發(fā)人員需要使用更加高效和靈活的工具來創(chuàng)建響應(yīng)式和交互式的界面。PHP和Vue.js作為前端開發(fā)領(lǐng)域的兩個(gè)重要技術(shù),搭配起來可以稱得上是完美的利器。本文將探討PHP和Vue的結(jié)合,以及詳細(xì)的代碼示例,幫助讀者更好地理解和應(yīng)用這兩

Go語言前端技術(shù)探秘:前端開發(fā)新視野 Go語言前端技術(shù)探秘:前端開發(fā)新視野 Mar 28, 2024 pm 01:06 PM

Go語言作為一種快速、高效的編程語言,在后端開發(fā)領(lǐng)域廣受歡迎。然而,很少有人將Go語言與前端開發(fā)聯(lián)系起來。事實(shí)上,使用Go語言進(jìn)行前端開發(fā)不僅可以提高效率,還能為開發(fā)者帶來全新的視野。本文將探討使用Go語言進(jìn)行前端開發(fā)的可能性,并提供具體的代碼示例,幫助讀者更好地了解這一領(lǐng)域。在傳統(tǒng)的前端開發(fā)中,通常會(huì)使用JavaScript、HTML和CSS來構(gòu)建用戶界面

Django是前端還是后端?一探究竟! Django是前端還是后端?一探究竟! Jan 19, 2024 am 08:37 AM

Django是一個(gè)Python編寫的web應(yīng)用框架,它強(qiáng)調(diào)快速開發(fā)和干凈方法。盡管Django是一個(gè)web框架,但是要回答Django是前端還是后端這個(gè)問題,需要深入理解前后端的概念。前端是指用戶直接和交互的界面,后端是指服務(wù)器端的程序,他們通過HTTP協(xié)議進(jìn)行數(shù)據(jù)的交互。在前端和后端分離的情況下,前后端程序可以獨(dú)立開發(fā),分別實(shí)現(xiàn)業(yè)務(wù)邏輯和交互效果,數(shù)據(jù)的交

前端面試官常問的問題 前端面試官常問的問題 Mar 19, 2024 pm 02:24 PM

在前端開發(fā)面試中,常見問題涵蓋廣泛,包括HTML/CSS基礎(chǔ)、JavaScript基礎(chǔ)、框架和庫(kù)、項(xiàng)目經(jīng)驗(yàn)、算法和數(shù)據(jù)結(jié)構(gòu)、性能優(yōu)化、跨域請(qǐng)求、前端工程化、設(shè)計(jì)模式以及新技術(shù)和趨勢(shì)。面試官的問題旨在評(píng)估候選人的技術(shù)技能、項(xiàng)目經(jīng)驗(yàn)以及對(duì)行業(yè)趨勢(shì)的理解。因此,應(yīng)試者應(yīng)充分準(zhǔn)備這些方面,以展現(xiàn)自己的能力和專業(yè)知識(shí)。

Django:前端和后端開發(fā)都能搞定的神奇框架! Django:前端和后端開發(fā)都能搞定的神奇框架! Jan 19, 2024 am 08:52 AM

Django:前端和后端開發(fā)都能搞定的神奇框架!Django是一個(gè)高效、可擴(kuò)展的Web應(yīng)用程序框架。它能夠支持多種Web開發(fā)模式,包括MVC和MTV,可以輕松地開發(fā)出高質(zhì)量的Web應(yīng)用程序。Django不僅支持后端開發(fā),還能夠快速構(gòu)建出前端的界面,通過模板語言,實(shí)現(xiàn)靈活的視圖展示。Django把前端開發(fā)和后端開發(fā)融合成了一種無縫的整合,讓開發(fā)人員不必專門學(xué)習(xí)

Golang與前端技術(shù)結(jié)合:探討Golang如何在前端領(lǐng)域發(fā)揮作用 Golang與前端技術(shù)結(jié)合:探討Golang如何在前端領(lǐng)域發(fā)揮作用 Mar 19, 2024 pm 06:15 PM

Golang與前端技術(shù)結(jié)合:探討Golang如何在前端領(lǐng)域發(fā)揮作用,需要具體代碼示例隨著互聯(lián)網(wǎng)和移動(dòng)應(yīng)用的快速發(fā)展,前端技術(shù)也愈發(fā)重要。而在這個(gè)領(lǐng)域中,Golang作為一門強(qiáng)大的后端編程語言,也可以發(fā)揮重要作用。本文將探討Golang如何與前端技術(shù)結(jié)合,以及通過具體的代碼示例來展示其在前端領(lǐng)域的潛力。Golang在前端領(lǐng)域的作用作為一門高效、簡(jiǎn)潔且易于學(xué)習(xí)的

golang框架面試題集錦 golang框架面試題集錦 Jun 02, 2024 pm 09:37 PM

Go框架是一組擴(kuò)展Go內(nèi)置庫(kù)的組件,提供預(yù)制功能(例如Web開發(fā)和數(shù)據(jù)庫(kù)操作)。流行的Go框架包括Gin(Web開發(fā))、GORM(數(shù)據(jù)庫(kù)操作)和RESTful(API管理)。中間件是HTTP請(qǐng)求處理鏈中的攔截器模式,用于在不修改處理程序的情況下添加身份驗(yàn)證或請(qǐng)求日志記錄等功能。Session管理通過存儲(chǔ)用戶數(shù)據(jù)來保持會(huì)話狀態(tài),可以使用gorilla/sessions管理session。

See all articles