querystring 模块学习笔记

使用场景:

  • 处理 url 地址携带参数的解析;
  • 处理字符串与对象字面量的相互转换;
  • url 地址里经常会出现将汉字编码话变成一串看不懂的字母,该模块可以解码;

如果你没有这部分需求,可以略过下面介绍以节约你的时间。

我们习惯将 querystring 称为 qs。

原生模块

querystring 模块是 node.js 原生自带的库,无需安装,直接通过 var qs = require('querystring') 就可以使用。


stringify( obj)

  • 作用: 将对象变成字符串
  • 示例代码: 新建 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
      汉字博大精深
    

results matching ""

    No results matching ""