Nodejs之Url模块&QueryString模块

Url模块

url.parse(urlStr, [parseQueryString], [slashesDenoteHost])

将URL字符串转换为对象。有3个参数:

  • urlStr: url字符串。
  • parseQueryString:可选。设置为true时,会使用querystring模块来解析URL中德查询字符串部分,默认为 false。
  • slashesDenoteHost:可选。默认为false,//foo/bar 形式的字符串将被解释成 { pathname: ‘//foo/bar’ };
    如果设置成true,//foo/bar 形式的字符串将被解释成 { host: ‘foo’, pathname: ‘/bar’ }。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    url.parse('http://www.jb51.net/article/61637.htm')
    //结果
    url {
    protocol: 'http:',
    slashes: true,
    auth: null,
    host: 'www.jb51.net',
    port: null,
    hostname: 'www.jb51.net',
    hash: null,
    search: null,
    query: null,
    pathname: '/article/61637.htm',
    path: '/article/61637.htm',
    href: 'http://www.jb51.net/article/61637.htm' }

    url.format(urlObj)

    将对象格式化为URL字符串,与url.parse()方法刚好相反。只有1个参数——urlObj,表示 URL对象。
    下面代码会将一串对象格式化为URL字符串:
    1
    2
    3
    url.format({protocol: 'http:',slashes: true,auth: null,host: 'www.jb51.net',port: null,hostname: 'www.jb51.net',hash: null,search: null,query: null, pathname: '/article/61637.htm',path: '/article/61637.htm',href:'http://www.jb51.net/article/61637.htm'})
    //结果
    'http://www.jb51.net/article/61637.htm'

    url.resolve(from, to)

    为URL或 href 插入或替换原有的标签。有2个参数:
  • from:源地址。
  • to:需要添加或替换的标签。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    url.resolve('/one/two','three')
    //结果
    '/one/three'

    url.resolve('http://example.com','two')
    //结果
    'http://example.com/two'

    url.resolve('http://example.com/two','three')
    //结果
    'http://example.com/three'

QueryString模块

querystring.stringify(obj, [sep], [eq])

将对象转换成字符串,字符串里多个参数将用 ‘&’ 分隔,将用 ‘=’ 赋值。有3个参数:

  • obj: 欲转换的对象。
  • sep:可选。设置分隔符,默认为 ‘&’。
  • eq:可选。设置赋值符,默认为 ‘=’。
    1
    2
    3
    4
    5
    6
    7
    querystring.stringify({name:'rose',sex:'girl'})
    //结果
    'name=rose&sex=girl'

    querystring.stringify({name:'rose',sex:'girl'},';',':')//用分号分隔,用冒 号赋值
    //结果
    'name:rose;sex:girl'

    querystring.parse(str, [sep], [eq], [options])

    与querystring.stringify()刚好相反,将字符串转换成对象。有4个参数:
  • str:欲转换的字符串。
  • sep:可选。设置分隔符,默认为 ‘&’。
  • eq:可选。设置赋值符,默认为 ‘=’。
  • options:maxKeys可接受字符串的最大长度,默认为1000,如果将其设置为0则表示没这个限制。
    1
    2
    3
    querystring.parse('name=rose&sex=girl')
    //结果
    { name: 'rose', sex: 'girl' }

    querystring.escape()

    转义。将传入的字符串进行编码返回相应的编码串。
    1
    2
    3
    querystring.escape('<哈哈>')
    //结果
    '%3C%E5%93%88%E5%93%88%3E'

    querystring.unescape()

    反转义。将传入的编码字符串反转回原始字符串。
    1
    2
    3
    querystring.unescape('%3C%E5%93%88%E5%93%88%3E')
    //结果
    '<哈哈>'