美文网首页
Node 模块之 util URL queryString p

Node 模块之 util URL queryString p

作者: simuty | 来源:发表于2016-10-21 15:39 被阅读102次
    第一部分 util

    util是一个Node.js核心模块,util模块设计的主要目的是为了满足Node内部API的需求。其中包括:格式化字符串对象的序列化实现对象继承等常用方法。要使用util模块中的方法,只需require('util')引入即可。

    1. util.format(format, […])返回一个格式化的字符串,其作用效果有点类似 printf。
    util.format('%s:%s', 'foo'); // 'foo:%s'
    
    1. util.log(string) 以标准输出的形式输出。它将获取当前的时间戳,并和参数 string 一起输出,中间用 “ - “ 连接。
    require('util').log('Timestmaped message.'); //15 May 21:41:33 - Timestmaped message
    
    
    1. util.inspect(object,[options])将任意对象转换为字符串,
    第二部分 URL
    url.parse():        输入 URL 字符串,返回一个对象。
    url.format(urlObj): 输入一个 URL 对象,返回格式化后的 URL 字符串。
    url.resolve(from, to): 给定一个基础URL路径,和一个href URL路径,并且象浏览器那样处理他们可以带上锚点。url.resolve('http://example.com/', '/one')    // 'http://example.com/one'
    

    例子

    var url = require('url');
    var queryUrl = "http://localhost:3000/index";
    返回一个对象
    var result = url.parse(queryUrl);
    console.log(result) ;
    

    将第一个结果作为第二个的参数

    var url = require('url');
    var urlObj = {
      protocol: 'http:',
      slashes: true,
      auth: null,
      host: 'localhost:3000',
      port: '3000',
      hostname: 'localhost',
      hash: null,
      search: null,
      query: null,
      pathname: '/index',
      path: '/index',
      href: 'http://localhost:3000/index' };
    var result = url.format(urlObj);
    console.log(result);
    
    

    结果为: http://localhost:3000/index

    第三部分: queryString 模块

    querystring模块是Node.js中的工具模块之一,用于处理URL中的查询字符串,即:querystring部分。查询字符串指:URL字符串中,从问号"?"(不包括?)开始到锚点"#"或者到URL字符串的结束(存在#,则到#结束,不存在则到URL字符串结束)的部分叫做查询字符串。

     url.parse(string).query
                                               |
               url.parse(string).pathname      |
                           |                   |
                           |                   |
                         ------ -------------------
    http://localhost:8888/start?foo=bar&hello=world
                                    ---       -----
                                     |          |
                                     |          |
                  querystring(string)["foo"]    |
                                                |
                             querystring(string)["hello"]
    

    3.1 querystring可以将URL参数字符串与参数对象的互相转换;

    var url = require('url');
    var qs = require('querystring');
    
    var testURL = 'http://localhost:3000/index?x=1&y=2';
    testURL = url.parse(testURL);
    //url格式化为对象
    //console.log(testURL);
    //拿到可查询字符串
    console.log(testURL.query);
    //对象 利用qs模块将可查询字符串 转换为对象
    var json = qs.parse(testURL.query);
    console.log(json);
    
    //将对象转换为字符串
    console.log(qs.stringify(json));
    
    

    结果为:

    x=1&y=2
    { x: '1', y: '2' }
    x=1&y=2
    

    3.2 querystring.stringify(obj, [sep], [eq]):将JSON对象格式化为查询字符串格式的字符串,默认的分隔符为:“&”和“=”, 可以选择是否覆盖默认的分割符('&')和分配符('=')。

    var url = require('url');
    var qs = require('querystring');
    var queryUrl = "http://localhost:3000/index?x=1&y=2" ;
    //query:查询
    //parse:解析
    queryUrl = url.parse(queryUrl).query;
    console.log(queryUrl) ;
    console.log(qs.parse(queryUrl)) ;
    

    例子二

    var querystring = require('querystring');
    
    var json = {x:'123', y:'456'};
    //对象序列化为一个querystring, 
    console.log(querystring.stringify(json, ';', ':'));
    //输出如下 x:123;y:456
    
    //querystring.parse方法用于将查询字符串解析为对象
    console.log(querystring.parse('xx=111111&yy=222222'));
    

    3.3 编码查询字符串中的参数:querystring.escape 和 querystring.unescape

    var querystring = require('querystring');
    //对查询字符串进行  编码
    var excape = querystring.escape('name=张&age=11')
    console.log(excape);
    //对查询字符串进行  解码
    console.log(querystring.unescape(excape));
    
    // //结果: 
    // name%3D%E5%BC%A0%26age%3D11
    // name=张&age=11
    
    第四部分 path处理文件路径

    path模块可以帮你规范化连接和解析路径,还可以用于绝对路径到对路径的转换、提取路径的组成部分及判断路径是否存在等。
    文件路径指文件的保存位置,可以分为相对路径和绝对路径。可以通过拼接文件路径检测文件是否存在,也可以访问文件信息。

    4.1 path.normalize(p) 规范路径

    var path = require('path');
    //格式化
    console.log(path.normalize('/foo/bar//baz/asdf/quux/..'));;
    // 处理后
    //'/foo/bar/baz/asdf'
    
    

    path.join()方法可以连接任意多个路径字符串。要连接的多个路径可做为参数传入。path.join()方法在接边路径的同时也会对路径进行规范化。例如:

    var path = require('path');
    //合法的字符串连接
    path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')
    // 连接后
    '/foo/bar/baz/asdf'
    
    //不合法的字符串将抛出异常
    path.join('foo', {}, 'bar')
    // 抛出的异常
    TypeError: Arguments to path.join must be strings'
    

    path.dirname()方法可以提取出一个文件路径中的目录的部分。path.basename()方法可以提取出一个文件路径中的文件的部分。path.extname()方法可以提取文件的扩展名。例如:

    var path = require('path');
    path.dirname('/Users/liuht/code/itbilu/demo/path.js')
    // 结果
    '/Users/liuht/code/itbilu/demo'
    
    path.basename('/Users/liuht/code/itbilu/demo/path.js')
    // 结果
    'path.js'
    
    path.extname('/Users/liuht/code/itbilu/demo/path.js')
    // 结果
    '.js'
    

    更多精彩内容请关注“IT实战联盟”哦~~~


    IT实战联盟.jpg

    参考
    Node 学习笔记—Node.js 核心 API 之 Util

    2.nodejs-post文件上传原理详解

    相关文章

      网友评论

          本文标题:Node 模块之 util URL queryString p

          本文链接:https://www.haomeiwen.com/subject/ylhcuttx.html