Rumah > Artikel > hujung hadapan web > Mari kita bincangkan tentang modul url dan modul rentetan pertanyaan dalam Node
Modul
url
dan modul querystring
ialah dua modul pemprosesan URL
yang sangat penting. Ia sering digunakan semasa melakukan node
pembangunan sisi pelayan.
Sebelum memperkenalkan modul url
, mari ambil gambar Sebaik sahaja anda memahami gambar ini, anda tidak akan ada kena mengena dengan url
modul.
Mari kita terangkan makna masing-masing
:
dan dalam huruf kecil. [Tutorial berkaitan yang disyorkan: tutorial video nodejs, Pengajaran pengaturcaraan]:
diikuti oleh dua //
, maka ia adalah benar. usrname:passwd
, jika tidak, ia adalah usrname
. Ambil perhatian bahawa ini sensitif huruf besar-besaran. ke.qq.com:8080
, dan dalam huruf kecil. ?
Selain itu, nilainya tidak dinyahkod. search
dengan ?
dialih keluar, dan selebihnya adalah sama; jika ia adalah objek, ia dinyahkodkan. #
disertakan. protocol
dan host
akan ditukar kepada huruf kecil. Mari terangkan tiga kaedah lazimnya
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
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);
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);
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
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
Modul ini juga digunakan untuk menghuraikan url
parameter pertanyaan. Di sini kami memberi tumpuan kepada menganalisis dua kaedahnya parse
dan stringify
.
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.
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!