querystring 模块学习笔记
使用场景:
- 处理 url 地址携带参数的解析;
- 处理字符串与对象字面量的相互转换;
- url 地址里经常会出现将汉字编码话变成一串看不懂的字母,该模块可以解码;
如果你没有这部分需求,可以略过下面介绍以节约你的时间。
我们习惯将 querystring 称为 qs。
原生模块
querystring 模块是 node.js 原生自带的库,无需安装,直接通过 var qs = require('querystring') 就可以使用。
stringify(
- 作用: 将对象变成字符串
示例代码: 新建 stringify.js 文件,内容如下:
var qs = require('querystring'); var obj = {name: '汉字博大精深', url: 'www.baidu.com'}; var param = qs.stringify(obj); console.log(typeof param); console.log(param);
打印结果如下:
string name=%E6%B1%89%E5%AD%97%E5%8D%9A%E5%A4%A7%E7%B2%BE%E6%B7%B1&url=www.baidu.com
结论:
汉字变成字符串会进行一次编码,变成一串看不懂的字母加符号; 英文字母不会改变。
parse()
- 作用:将具有对象格式的字符串变成对象
示例代码: 新建 parse.js 文件,内容如下:
var qs = require('querystring'); // 先将对象转换为字符串方便下面测试 var obj = {name: '汉字博大精深', url: 'www.baidu.com'}; var param = qs.stringify(obj); console.log(typeof param); console.log(param); // 将字符串转换为对象 var newObj = qs.parse(param); console.log(typeof newObj); console.log(newObj);
打印结果如下:
string name=%E6%B1%89%E5%AD%97%E5%8D%9A%E5%A4%A7%E7%B2%BE%E6%B7%B1&url=www.baidu.com object { name: '汉字博大精深', url: 'www.baidu.com' }
结论:
在将字符串解析为对象时,会自动将编码的汉字变成原来的样子。
escape()
- 作用:将汉字编码为不认识的字母串
示例代码: 新建 escape.js 文件,内容如下:
var qs = require('querystring'); var param = '汉字博大精深'; console.log(qs.escape(param));
打印结果如下:
%E6%B1%89%E5%AD%97%E5%8D%9A%E5%A4%A7%E7%B2%BE%E6%B7%B1
unescape()
- 作用:既然有编码,自然有解码,将字母串变成我们认识的汉字
示例代码: 新建 unescape.js 文件,内容如下:
var qs = require('querystring'); var param = '汉字博大精深'; var escapes = qs.escape(param); console.log(escapes); var unescapes = qs.unescape(escapes); console.log(unescapes);
打印结果如下:
%E6%B1%89%E5%AD%97%E5%8D%9A%E5%A4%A7%E7%B2%BE%E6%B7%B1 汉字博大精深