美文网首页
node中URL模块

node中URL模块

作者: 夏夏夏夏顿天 | 来源:发表于2018-10-16 10:07 被阅读22次

    node中的URL模块,有两个版本, 一个是Node.js遗留的特有的API

    保留的原因:虽然Node.js遗留的特有的API并没有被弃用,但是保留的目的是用于向后兼容已有应用程序。因此新的应用程序请使用WHATWG API。

    URL模块无非干这么三件事情

    • 解析地址
    • 生成地址
    • 拼接地址

    解析地址

    解析地址的方法用parse

    url.parse()

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

    urlStr: 要解析的url地址

    queryString: 解析出来的查询字符串还是查询对象,true是对象 false是字符串,例如:http://foo/bar?a=123, true的话 query: {a: 123}, false的话 query: 'a=123' 默认是false

    AnalysisHost: 是否要解析出来host (即将//之后至下一个/之前的字符串),例如://foo/bar 会被解析为{host: 'foo', pathname: '/bar},否则{pathname: '//foo/bar'}.默认是false

    const myURLA =
        url.parse('https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash', true);
    console.log(myURLA);
    
    // Url {
    //     protocol: 'https:', // 协议
    //         slashes: true,
    //         auth: 'user:pass', // 用户名密码
    //         host: 'sub.host.com:8080', // host主机名
    //         port: '8080', // 端口号
    //         hostname: 'sub.host.com', // 主机名不带端口号
    //         hash: '#hash', // 哈希值
    //         search: '?query=string',// 查询字符串
    //         query: 'query=string', // 请求参数
    //         pathname: '/p/a/t/h', // 路径名
    //         path: '/p/a/t/h?query=string', // 带查询的路径名
    //         href: 'https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash' // 原字符串本身
    }
    
    

    生成地址

    url.format(url,options)

    将一个URL对象转换为URL字符串

     url: 一个WHATWG URL对象
    options:
    1. auth: 如果序列化的URL字符串应该包含用户名和密码为true,否则为false。默认为true。
    2. fragment: 如果序列化的URL字符串应该包含分段为true,否则为false。默认为true。即是不是需要包含哈希值
    3. search: 如果序列化的URL字符串应该包含搜索查询为true,否则为false。默认为true。
    4. unicode: true 如果出现在URL字符串主机元素里的Unicode字符应该被直接编码而不是使用Punycode编码为true,默认为false。
    
    返回一个WHATWG URL对象的可自定义序列化的URL字符串表达。
    

    案例

    url.format({   
      protocol: 'http:',   
      host: 'www.example.com',    
      pathname: '/p/a/t/h',    
      search: 'query=string'
    });
    /*
    'http://www.example.com/p/a/t/h?query=string'
    */
    

    拼接URL

    url.resolve()

    可以用于拼接URL

    url.resolve('/one/two/three', 'four') // '/one/two/four'
    url.resolve('http://example.com/', '/one') // 'http://example.com/one'
    url.resolve('http://example.com/one', '/two') // 'http://example.com/two'
    
    

    参考:

    https://juejin.im/post/5a978d225188254b0323147c
    https://www.jianshu.com/p/df3ffeb18f20

    相关文章

      网友评论

          本文标题:node中URL模块

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