zoukankan      html  css  js  c++  java
  • node中的url和path模块

    //path模块
    1.Node.js path 模块提供了一些用于处理文件路径的小工具,我们可以通过以下方式引入该模块:
    var path = require("path")
    
    2.常用方法
    ================path.join([...paths])
    path.join() 方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径
    会正确使用当前系统的路径分隔符,Unix系统是"/",Windows系统是""。
    
    例子:
    path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');// 返回: '/foo/bar/baz/asdf'
    path.join('foo', {}, 'bar');// 抛出 'TypeError: Path must be a string. Received {}'
    
    如果任一路径片段不是一个字符串,则抛出 TypeError。
    
    =================path.normalize(path)
    path.normalize() 方法会规范化给定的 path,并解析 '..' 和 '.' 片段。
    
    例如:
    path.normalize('/foo/bar//baz/asdf/quux/..');// 返回: '/foo/bar/baz/asdf'    ..表示上一级
    path.normalize('C:\temp\\foo\bar\..\');// 返回: 'C:\temp\foo\'      ..表示上一级
    path.win32.normalize('C:////temp\\/\/\/foo/bar');// Returns: 'C:\temp\foo\bar'
    
    如果 path 不是一个字符串,则抛出 TypeError。
    
    =======================path.resolve([...paths])
    path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。
    如果没有传入 path 片段,则 path.resolve() 会返回当前工作目录的绝对路径。
    path.resolve('/foo/bar', './baz');// 返回: '/foo/bar/baz'
    path.resolve('/foo/bar', '/tmp/file/');// 返回: '/tmp/file'
    
    path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');// 如果当前工作目录为 /home/myself/node,// 则返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'
    
    如果任何参数不是一个字符串,则抛出 TypeError。
    ======================path.dirname(p)
    返回路径中代表文件夹的部分,同 Unix 的dirname 命令类似
    
    ======================path.extname(p)
    返回路径中文件的后缀名,即路径中最后一个'.'之后的部分。如果一个路径中并不包含'.'或该路径只包含一个'.' 且这个'.'为路径的第一个字符,则此命令返回空字符串。
    
    =======================path.parse(pathString)
    返回路径字符串的对象。
    
    ========================path.format(pathObject)
    从对象中返回路径字符串,和 path.parse 相反。
    //url模块
    1.url 模块提供了一些实用函数,用于 URL 处理与解析。
    const url = require('url');
    
    2.URL 字符串与 URL 对象
    ┌──────────────────────────────────────────────────────
    
    ───────────────────────────────────────┐
    │                                            href                                             │
    ├──────────┬──┬─────────────────────┬──────────────────
    
    ───┬───────────────────────────┬───────┤
    │ protocol │  │        auth         │        host         │           path            │ hash  │
    │          │  │                     ├──────────────┬──────┼──────────┬──
    
    ──────────────┤       │
    │          │  │                     │   hostname   │ port │ pathname │     search     │       │
    │          │  │                     │              │      │          ├─┬──────────────┤ 
    
          │
    │          │  │                     │              │      │          │ │    query     │       │
    "  https:   //    user   :   pass   @ sub.host.com : 8080   /p/a/t/h  ?  query=string   #hash "
    │          │  │          │          │   hostname   │ port │          │                │       │
    │          │  │          │          ├──────────────┴──────┤          │              
    
      │       │
    │ protocol │  │ username │ password │        host         │          │                │       │
    ├──────────┴──┼──────────┴──────────┼──────────────────
    
    ───┤          │                │       │
    │   origin    │                     │       origin        │ pathname │     search     │ hash  │
    ├─────────────┴─────────────────────┴──────────────────
    
    ───┴──────────┴────────────────┴───────┤
    │                                            href                                             │
    └──────────────────────────────────────────────────────
    
    ───────────────────────────────────────┘
    
    
    3.url 模块提供了两套 API 来处理 URL 字符串:一个是Node.js特有的API,是旧版本的遗留;另一个则是实现了WHATWG URL 
    
    Standard的 API ,该标准也在各种浏览器中被使用。
    
    请注意: 虽然Node.js遗留的特有的API并没有被弃用,但是我们保留它的目的仅是用于兼容已有应用程序。因此新的应用程序
    
    应当使用WHATWG API
    
    4.
    这种写法在低版本的node中不支持
    最新发布的Node.js v8.0.0 将在v7.0.0中非实验性的WHATWG URL分析器做了实验性实现,并且完全支持. 下面将介绍你可以如
    
    何使用它.
    WHATWG网页超文本应用技术工作小组是一个以推动网络HTML 5 标准为目的而成立的组织。
    利用WHATWG API解析一个URL字符串:
    
    const { URL } = require('url');
    const myURL = new URL('https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash');
    
    
    const { URL } = require('url');
    const myURL = new URL('/foo', 'https://example.org/');
    
    ######url.hash
    console.log(myURL.hash);
    
    console.log(myURL.host);
    
    console.log(myURL.hostname);
    
    console.log(myURL.href);
    
    console.log(myURL.origin);
    
    console.log(myURL.pathname);
    
    console.log(myURL.port);
    
    console.log(myURL.protocol);
    
    console.log(myURL.search);
    
    url.searchParams
    
    5.Node.js特有的API
    const url = require("url");
    
    url一共提供了三个方法,分别是url.parse();  url.format();  url.resolve();
    
        1.url.parse(urlString,boolean,boolean)
        parse这个方法可以将一个url的字符串解析并返回一个url的对象
    
            参数:urlString指传入一个url地址的字符串
    
         第二个参数(可省)传入一个布尔值,默认为false,为true时,返回的url对象中,query的属性为一个对象。
    
         第三个参数(可省)传入一个布尔值,默认为false,为true时,解析时会将url的"//"和第一个"/"之间的部分解析
    
    为主机名,可以在ip地址之后加个端口号试下。
    
        2 url.format(urlObj)
        format这个方法是将传入的url对象编程一个url字符串并返回
    
        3 url.resolve(from,to)
        接受 域名(或ip地址) 和 路径 生成完整url。
        resolve这个方法返回一个格式为"from/to"的字符串,在宝宝看来是对传入的两个参数用"/"符号进行拼接,并返回
  • 相关阅读:
    hdu1069Monkey and Banana(动态规划)
    hdu2571 命运(动态规划)
    hdu1505City Game(动态规划)
    在jvm底层有关于方法区的介绍
    用IDEA查看源码总是跳到.class文件而不是.java文件的解决办法
    如果Son类继承Father类,Father类继承GrandFather类,那么new Son()创建对象的时候是否会执行GrandFather类里面的方法
    看面试题有感:子类构造器(无参或有参)继承的super()方法在何时调用,与静态代码块,普通代码块相比的执行顺序如何的思考及证明
    关于子类构造器调用super()方法的规定
    为什么重写了equals方法后还需要重写hashCode方法
    字符串常量池处在JVM的堆中,那么是在堆的哪个部分呢
  • 原文地址:https://www.cnblogs.com/bao2333/p/10143087.html
Copyright © 2011-2022 走看看