blear.utils.url

1Introduction

2Example

var url = require('blear.utils.url');

3Static

3.1.parse(url): result

解析 URL 为对象信息。

var ret = url.parse('http://aa.bb.cc:9090/dd/ee/ff/?gg=hh&ii=jj&gg=kk#!/ll/mm/nn/?oo=pp&qq=rr&oo=ss#tt');

ret = {
    "href": "http://aa.bb.cc:9090/dd/ee/ff/?gg=hh&ii=jj&gg=kk#!/ll/mm/nn/?oo=pp&qq=rr&oo=ss#tt",
    "base": "http://aa.bb.cc:9090",
    "protocol": "http:",
    "host": "aa.bb.cc:9090",
    "hostname": "aa.bb.cc",
    "port": "9090",
    "pathname": "/dd/ee/ff/",
    "search": "?gg=hh&ii=jj&gg=kk",
    "hash": "#!/ll/mm/nn/?oo=pp&qq=rr&oo=ss#tt",
    "hashstring": "#!/ll/mm/nn/?oo=pp&qq=rr&oo=ss#tt",
    "querystring": "gg=hh&ii=jj&gg=kk",
    "query": {
      "gg": [
          "hh",
          "kk"
      ],
      "ii": "jj"
    },
    "origin": "http://aa.bb.cc:9090",
    "statical": true
};

3.1.1url

  • 类型:String
  • 说明:url 字符串

3.1.2result

  • 类型:Object
  • 说明:字段信息
3.1.2.1result.href
  • 类型:String
  • 说明:原始 url
3.1.2.2result.base
  • 类型:String
  • 说明:协议 + 域名 + 端口
3.1.2.3result.protocol
  • 类型:String
  • 说明:协议
3.1.2.4result.host
  • 类型:String
  • 说明:域名 + 端口
3.1.2.5result.hostname
  • 类型:String
  • 说明:域名
3.1.2.6result.port
  • 类型:String
  • 说明:端口
3.1.2.7result.pathname
  • 类型:String
  • 说明:路径
3.1.2.8result.search
  • 类型:String
  • 说明:查询字符串,包括 ?
3.1.2.9result.hash
  • 类型:String
  • 说明:哈希字符串
3.1.2.10result.hashstring
  • 类型:String
  • 说明:哈希字符串,同 result.hash
3.1.2.11result.querystring
  • 类型:String
  • 说明:查询字符串,不包括 ?
3.1.2.12result.query
  • 类型:Object
  • 说明:查询信息,对 querystring 的解析结果,详细参考 blear.utils.querystring
3.1.2.13result.origin
  • 类型:String
  • 说明:协议 + 域名 + 端口,同 result.base
3.1.2.14result.statical
  • 类型:Boolean
  • 说明:是否静态,我们认为包含协议或自动协议的 url 都为静态的

3.2.stringify(result): url

将对象转换为 url。

url.stringify({
    pathname: '/a/b.c'
});
// => "/a/b.c"

3.2.1result

  • 类型:Object
  • 说明:至少需要包括 pathname

3.2.2url

  • 类型:String
  • 说明:转换后的 url

3.3.matchPath(url, rule, [options]): result

url 路径匹配。

url.matchPath('/user/123', '/user/*');
// => {}

url.matchPath('/user/123/page/456', '/user/**');
// => {}

url.matchPath('/user/123/page/456', '/user/:userId/page/:pageNo');
// => {
//    userId: "123",
//    pageNo: "456"
// }

3.3.1url

  • 类型:String
  • 说明:待匹配的 url

3.3.2rule

  • 类型:String
  • 说明:匹配规则
    • *:匹配一级路径
    • **:匹配多级路径
    • :param:匹配路径表达式

3.3.3options

  • 类型:Object
  • 说明:匹配配置

3.3.4options.ignoreCase

  • 类型:Boolean
  • 说明:是否忽略大小写
  • 默认:false

3.3.5options.strict

  • 类型:Boolean
  • 说明:是否严格模式,严格模式即 /a/b !== /a/b/
  • 默认:false

3.3.6result

  • 类型:Object
  • 说明:匹配失败返回 null

3.4.setQuery(url1, key, [val]): url2

设置查询字符串。

url.setQuery('/', 'a', 1);
// => "/?a=1"

url.setQuery('/', {a: 1, b: 2});
// => "/?a=1&b=2"

3.4.1url1

  • 类型:String
  • 说明:设置前的 url

3.4.2key

  • 类型:String | Object
  • 说明:可以是单个 key,也可以是多个 key 的对象集合

3.4.3val

  • 类型:String
  • 说明:如果 key 是一个对象,则省略 val;如果是单个 key,则需要填值

3.4.4url2

  • 类型:String
  • 说明:设置后的 url

3.5.removeQuery(url1, key): url2

从 url 上移除指定查询字段。

url.removeQuery('/?a=1&b=2', 'a');
// => "/?a=1"

url.removeQuery('/?a=1&b=2', ['a', 'b']);
// => "/?"

3.5.1url1

  • 类型:String
  • 说明:设置前的 url

3.5.2key

  • 类型:String | Array
  • 说明:可以是单个 key,也可以是多个 key 的数组集合

3.5.3url2

  • 类型:String
  • 说明:设置后的 url

3.6.qrcode(options): url

根据参数生成二维码 URL 地址。使用的是百度网盘服务(https://pan.baidu.com/share/qrcode)。

3.6.1options

  • 类型:String | Object
  • 说明:需要转换为二维码地址的文本或描述配置

3.6.2options.size

  • 类型:String
  • 说明:内容尺寸,单位 px
  • 默认:300

3.6.3options.text

  • 类型:String
  • 说明:文本
  • 默认:""

3.6.4url

  • 类型:String
  • 说明:二维码地址

3.7.resolve(from, ...to): url

合并并解决 url。更多参考 blear.utils.path

url.resolve('http://example.com/a/b/c/d', 'e/f/g');
// => "http://example.com/a/b/c/e/f/g"

3.7.1from

  • 类型:String
  • 说明:源 url

3.7.2...to

  • 类型:String
  • 说明:目标 url,可以是多个,多个的话会连续合并

3.7.3url

  • 类型:String
  • 说明:合并后的 url

3.8.join(from, ...to): url

仅合并 url。更多参考 blear.utils.path

url.join('http://example.com/a/b/c/d', 'e/f/g');
// => "http://example.com/a/b/c/d/e/f/g"

3.8.1from

  • 类型:String
  • 说明:源 url

3.8.2...to

  • 类型:String
  • 说明:目标 url,可以是多个,多个的话会连续合并

3.8.3url

  • 类型:String
  • 说明:合并后的 url

4Dependencies

5Reference