Rumah >hujung hadapan web >tutorial js >Mari kita bincangkan tentang modul url dan modul rentetan pertanyaan dalam Node

Mari kita bincangkan tentang modul url dan modul rentetan pertanyaan dalam Node

青灯夜游
青灯夜游ke hadapan
2023-02-23 19:39:252024semak imbas

Modul

Mari kita bincangkan tentang modul url dan modul rentetan pertanyaan dalam Node

url dan modul querystring ialah dua modul pemprosesan URL yang sangat penting. Ia sering digunakan semasa melakukan node pembangunan sisi pelayan.

url

Sebelum memperkenalkan modul url, mari ambil gambar Sebaik sahaja anda memahami gambar ini, anda tidak akan ada kena mengena dengan url modul.

Mari kita bincangkan tentang modul url dan modul rentetan pertanyaan dalam Node

Mari kita terangkan makna masing-masing

  • protokol: protokol Perlu diingat bahawa ia mengandungi : dan dalam huruf kecil. [Tutorial berkaitan yang disyorkan: tutorial video nodejs, Pengajaran pengaturcaraan]
  • seratan: Jika : diikuti oleh dua //, maka ia adalah benar.
  • auth: Maklumat pengesahan, jika ada kata laluan, ia adalah usrname:passwd, jika tidak, ia adalah usrname. Ambil perhatian bahawa ini sensitif huruf besar-besaran.
  • hos: nama hos. Ambil perhatian bahawa port disertakan, seperti ke.qq.com:8080, dan dalam huruf kecil.
  • nama hos: nama hos, tidak termasuk port dan huruf kecil.
  • port: nombor port.
  • laluan: bahagian laluan, termasuk bahagian carian.
  • nama laluan: bahagian laluan, tidak termasuk bahagian carian.
  • carian: rentetan pertanyaan ambil perhatian bahawa ia mengandungi ? Selain itu, nilainya tidak dinyahkod.
  • pertanyaan: rentetan atau objek. Jika ia adalah rentetan, ia search dengan ? dialih keluar, dan selebihnya adalah sama; jika ia adalah objek, ia dinyahkodkan.
  • cincang: Bahagian cincang, sila ambil perhatian bahawa # disertakan.
  • href: alamat asal. Walau bagaimanapun, perlu diambil perhatian bahawa protocol dan host akan ditukar kepada huruf kecil.

Mari terangkan tiga kaedah lazimnya

parse(urlString, parseQueryString, slashesDenoteHost)

Kaedah ini akanurl rentetan dihuraikan ke dalam object, yang memudahkan pembangun beroperasi.

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);

Output

Mari kita bincangkan tentang modul url dan modul rentetan pertanyaan dalam Node

Kaedah ini juga menyokong lulus dua parameter lain, parseQueryString dan slashesDenoteHos

parseQueryString: (lalai adalah palsu) Jika ia false, maka urlObject.query ialah rentetan yang tidak dihuraikan, seperti nick=%E4%B8%AD%E6%96%87, dan nilai yang sepadan tidak akan menjadi decode jika parseQueryString adalah benar, Kemudian urlObject.query ialah object, seperti { nick: '中文' }, dan nilainya akan `dinyahkodkan

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);

Mari kita bincangkan tentang modul url dan modul rentetan pertanyaan dalam Node

slashesDenoteHos: ( lalai adalah palsu) Jika ia true, maka //randy/nick dalam randy akan dianggap sebagai hostname; jika ia false, maka randy akan dianggap sebagai sebahagian daripada pathname.

Anda mungkin tidak faham maksud ayat ini pada pandangan pertama saya akan berikan contoh di bawah dan saya percaya anda akan faham.

const str2 = "//randy/nick";

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

Mari kita bincangkan tentang modul url dan modul rentetan pertanyaan dalam Node

format(urlObject)

Kaedah ini ialah operasi terbalik parse. Tukar objek kepada url rentetan.

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

selesaikan(dari, kepada)

Kaedah ini digunakan untuk menyelesaikan sasaran URL berbanding asas 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 Modul ini juga digunakan untuk menghuraikan url parameter pertanyaan. Di sini kami memberi tumpuan kepada menganalisis dua kaedahnya parse dan stringify.

parse(str, sep, eq, options)

parse menukar rentetan pertanyaan kepada jenis objek, dan juga 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: '中文' }

Mari kita lihat parameter kedua dan ketiganya. Malah, ia adalah sama dengan menggantikan &、= dengan watak tersuai Penulis akan memberikan contoh di bawah dan anda akan faham dengan cepat.

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' }

adalah bersamaan dengan menggantikan & dengan | dan = dengan -. Penulis merasakan bahawa keadaan ini sepatutnya jarang berlaku.

stringify(obj, sep, eq, options)

Kaedah ini ialah operasi terbalik parse di atas. Mari pergi terus ke contoh di bawah

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

Kaedah ini turut menyokong pemisah tersuai.

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

更多node相关知识,请访问:nodejs 教程

Atas ialah kandungan terperinci Mari kita bincangkan tentang modul url dan modul rentetan pertanyaan dalam Node. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam