亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
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模塊是非常重要的兩個URL處理模塊。在做node服務(wù)端的開發(fā)時會經(jīng)常用到。

url

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

image.png

我們來解釋下各自的含義

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

下面我們來講解下它的三個常用方法

parse(urlString, parseQueryString, slashesDenoteHost)

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

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

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

parseQueryString:(默認為false)如為false,則urlObject.query為未解析的字符串,比如nick=%E4%B8%AD%E6%96%87,且對應(yīng)的值不會decode;如果parseQueryString為true,則urlObject.queryobject,比如{ nick: '中文' },且值會被`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:(默認為false)如果為true,那么類似//randy/nick里的randy就會被認為是hostname;如果為false,則randy被認為是pathname的一部分。

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

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)

這個方法就是parse的反向操作。將對象轉(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)

該方法用于解析相對于基本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這個模塊,也是用來做url查詢參數(shù)的解析。這里我們重點分析下它的parsestringify兩個方法。

parse(str, sep, eq, options)

parse是將查詢字符串轉(zhuǎn)成對象類型,并且也會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: '中文' }

下面我們再來看看它的第二和第三個參數(shù)。其實相當(dāng)于可以替換&、=為自定義字符,下面筆者舉個例子就很快明白了。

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)

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

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

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

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

更多node相關(guān)知識,請訪問:nodejs 教程!

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

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

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

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

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

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

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

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

C#開發(fā)經(jīng)驗分享:前端與后端協(xié)同開發(fā)技巧 C#開發(fā)經(jīng)驗分享:前端與后端協(xié)同開發(fā)技巧 Nov 23, 2023 am 10:13 AM

作為一名C#開發(fā)者,我們的開發(fā)工作通常包括前端和后端的開發(fā),而隨著技術(shù)的發(fā)展和項目的復(fù)雜性提高,前端與后端協(xié)同開發(fā)也變得越來越重要和復(fù)雜。本文將分享一些前端與后端協(xié)同開發(fā)的技巧,以幫助C#開發(fā)者更高效地完成開發(fā)工作。確定好接口規(guī)范前后端的協(xié)同開發(fā)離不開API接口的交互。要保證前后端協(xié)同開發(fā)順利進行,最重要的是定義好接口規(guī)范。接口規(guī)范涉及到接口的命

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

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

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

Django:前端和后端開發(fā)都能搞定的神奇框架!Django是一個高效、可擴展的Web應(yīng)用程序框架。它能夠支持多種Web開發(fā)模式,包括MVC和MTV,可以輕松地開發(fā)出高質(zhì)量的Web應(yīng)用程序。Django不僅支持后端開發(fā),還能夠快速構(gòu)建出前端的界面,通過模板語言,實現(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)和移動應(yīng)用的快速發(fā)展,前端技術(shù)也愈發(fā)重要。而在這個領(lǐng)域中,Golang作為一門強大的后端編程語言,也可以發(fā)揮重要作用。本文將探討Golang如何與前端技術(shù)結(jié)合,以及通過具體的代碼示例來展示其在前端領(lǐng)域的潛力。Golang在前端領(lǐng)域的作用作為一門高效、簡潔且易于學(xué)習(xí)的

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

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

See all articles