1.代码
结合官网文档:node.js中文网
const url = require('url');
const querystring = require("querystring");
const myURL =
url.parse('https://user:pass@sub.example.com:8080/p/a/t/h?id=187000&name=ligangan&age=18#hash');
console.log(myURL) // 打印 1 见截图
const { query } = myURL //把myURL.query 赋值给变量 query
console.log("query=>",query) // id=187000&name=ligangan&age=18
//将 query解析成json数据
//1.querystring.parse() searchParams.toString()
console.log("querystring.parse()=>",querystring.parse(query)) // [Object: null prototype] { id: '187000', name: 'ligangan', age: '18' }
let obj = new URL('https://user:pass@sub.example.com:8080/p/a/t/h?id=187000&name=ligangan&age=18#hash');
console.log(obj) // 打印 2 见截图
console.log("searchParams.toString()=>",querystring.parse(obj.searchParams.toString()));
// [Object: null prototype] { id: '187000', name: 'linana', age: '18' }
// 用new URL可用searchParams.get('字段名')直接取到字段值
console.log("obj.searchParams.name=>",obj.searchParams.get('name')) // ligangan
// 把query字符串按&拆成数组arr
let arr = query.split("&");
console.log("arr=>",arr) // ['id=187000','name=ligangan','age=18']
//2.js直接法
var obj1 = {};
for (let i of arr) {
obj1[i.split("=")[0]] = i.split("=")[1]; //对数组每项用=分解开,=前为对象属性名,=后为属性值
}
console.log("obj1=>",obj1);
//3.Object.defineProperty法
var obj2 = { };
for (let i of arr) {
let key = i.split("=")[0];
let value = i.split("=")[1];
if(key == 'age'){value = parseInt(value)};
Object.defineProperty(obj2, key, {
value: value,
writable: true,
enumerable: true,
configurable: true
});
}
console.log("obj2=>",obj2);
/*
url 网址
旧版: 【url.parse(urlString[, parseQueryString[, slashesDenoteHost]])】
url.parse() 方法接受网址字符串,解析并返回网址对象。
新版: 【new URL(input[, base])】
通过相对于 base 解析 input 来创建新的 URL 对象。 如果 base 作为字符串传入,则其将被解析为等效于 new URL(base)。
const myURL = new URL('/foo', 'https://example.org/');
// https://example.org/foo
querystring 旧版查询字符串
【querystring.parse(str[, sep[, eq[, options]]])】
querystring.parse() 方法将网址查询字符串 (str) 解析为键值对的集合。
例如,查询字符串 'foo=bar&abc=xyz&abc=123' 被解析为:
{
foo: 'bar',
abc: ['xyz', '123']
}
*/
2.部分截图
打印1
打印2
全部打印