nodejs之url模塊


  url模塊提供了一些實用函數,用於URL處理與解析。

  const url = require('url') //引入url模塊

  1.url 字符串與url對象

  一個 URL 字符串是一個結構化的字符串,它包含多個有意義的組成部分。 當被解析時,會返回一個 URL 對象,它包含每個組成部分作為屬性。

url模塊提供了兩套API來處理URLs:一個是Node.js遺留的特有的API,另一個則是通常使用在web瀏覽器中 實現了WHATWG URL Standard的API.

請注意: 雖然Node.js遺留的特有的API並沒有被棄用,但是保留的目的是用於向后兼容已有應用程序。因此新的應用程序請使用WHATWG API。

  利用WHATWG API解析一個URL字符串:

    const { URL } = require('url');     const myURL = 
       new URL('https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash');

  在瀏覽器中,WHATWG URL在全局總是可用的,而在Node.js中,任何情況下打開 或使用一個鏈接都必須事先引用'url'模塊:require('url').URL

  通過Node.js提供的API解析一個URL:

  const url = require('url');   const myURL =      url.parse('https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash');

  2 url提供了一些方法

    url.parse(urlString)  //字符串類型解析成對象
 
    url.format(urlObject) //對象類型轉字符串
 
    url.resolve(from,to)  //路徑拼接
  小技巧:
    
  Node環境執行並查看url對象
 
  命令:
       Node 回車
 
      >url.parse(“http://www.baidu.com") 
 
如圖:所示 使用 url.parse() 解析 www.baidu.com

  

3.URLSearchParams和URL方法:
 
URL是創建url對象用的東西, RULSearchParams 這玩意是專門用來查詢url之中傳遞的數據的。但是他們之間的關系有那么一些小復雜
 
const { URL, URLSearchParams} = require("url ”);
 
來個腦筋急轉彎:
 
let myUrl = new URL(" https://www.baidu.com?abc=123");
let urlSearchParams = new URLSearchParams(myUrl.search);
urlSearchParams.set("abb","456");
console.log(urlSearchParams);
console.log(myUrl.href ); //這里的結果是啥? 我們對urlSearchParams的操作是否會影響到 myUrl那?
 
4.parse:
 
某些特殊地址:
 
比如圖片,cdn加速的東西啥的,都喜歡用這樣的方式來進行地址的傳遞:
 
 
這類地址有一個非常形象的名字叫做: 免協議地址 。
 
那么我們在解析免協議地址的時候:
 
會被解析成這個熊樣 :
 
這真的是木有協議了! 你可以直接粘貼這段代碼到瀏覽器上, 瀏覽器會返回給你一個file://的協議,變成本地磁盤找尋。
 
Url {
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: null,
  query: null,
 
遇到這樣的地址真的沒法解析了么?
 
當然不是,看下 文檔 ,注意文檔的第三個參數。
 
所以只要將:url.parse() 第三個參數改成true,就萬事大吉了。
 
format
 
逆運算,obj => string。
 
resolve 
 
域名和路徑的集合:
 
查看這個結果看功能:
 
Url.resolve(“http://www.baidu.com”,”/b”)
 
查看這個結果看真實作用:
 
Url.resolve(“ http://www.baidu.com/a”,”/b")
 
 
 
 
// 練習代碼如下:
 
//const url = require('url')

//const ourl = 'http:www.baidu.com'
//字符串=>對象
// const urlObj = url.parse(ourl)

//console.log(urlObj)

//對象轉換成字符串

// var surl = {
// hostname:'www.baidu.com',
// port:443
// }

// var urlObjc = url.format(surl)

// console.log(urlObjc)

// var objURL = {
// hostname:"www.baidu.com",
// port:443
// }
// //對象 => 字符串;
// var surl = url.format(objURL);
// console.log(surl);


//路徑拼接

// let surl = 'www.baidu.com/nin'

// console.log(url.resolve(surl,'view'))

const {URL, URLSearchParams} = require('url')

//var URL = require('url').URL
//var URLSearchParams = require('url').URLSearchParams

//URL是創建url對象用的東西
//RULSearchParams 這玩意是專門用來查詢url之中傳遞的數據的


// let url = new URL("http://www.baidu.com/hello=123?nihao=123");


//searchParams是url的一個空對象如上:URLSearchParams {'nihao' =>'123'} 是set結構

// let serp = new URLSearchParams(url.searchParams);

// serp.set("wobuhao","456");

// url.search = serp;
// console.log(serp);

// console.log(url);

//面協議地址

const url = require("url");

let sUrl = "//static.lagou.com/i/image/M00/02/FF/Cgp3O1aliq6AKO4xAAAUy0wZ8KA413.jpg";
console.log(url.parse(sUrl,false,true));

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM