Skip to content
This repository was archived by the owner on Aug 24, 2022. It is now read-only.
This repository was archived by the owner on Aug 24, 2022. It is now read-only.

API 文档 - url 模块 #56

Description

@cssmagic

API 文档 - url 模块

JavaScript 接口

_.url.parseQuery(query)

把 query string 解析为以对象的方式保存的名值对。

参数

  • query -- 字符串。需要解析的 query string。

返回值

对象。解析结果,以名值对的方式保存。

注意事项

  • 传入不合法的参数,则一律返回空对象({})。
  • Query string 中的所有 key 都会被转换为小写。
  • Query string 的格式为 foo=1&bar=2,不包含问号,多个连续的 & 字符会被视为一个。
  • 解析结果中的值如果为 truefalsenullundefined 或数字时,总是以字符串的方式保存,不会自动转换数据类型。
  • 当 query string 中出现某个 key 但没有对应的值时(比如 foo&bar=2foo=&bar=2 中的 foo),其值将解析为空字符串。

已知缺陷

  • 重复出现的 key 将只解析最后一次出现的值,不会把所有值加入到一个数组中。
  • 不处理复杂模式的 key,比如 foo[]foo[bar] 都不会被视为特殊含义,只会视为普通的 key。

示例

_.url.parseQuery('foo=1&bar=2')  // => {foo: '1', bar: '2'}
_.url.parseQuery('foo=&bar=2')  // => {foo: '', bar: '2'}
_.url.parseQuery('foo&bar=2')  // => {foo: '', bar: '2'}
_.url.parseQuery('')  // => {}

_.url.getParam(key)

获取当前页面的某个 URL 参数的值。(“URL 参数” 即为 query string 中的名值对。)

参数

  • key -- 字符串。需要获取的 URL 参数名,忽略大小写。

返回值

字符串或 undefined。对应 URL 参数的值。

注意事项

  • Query string 的解析方式参见 _.url.parseQuery() 方法。
  • 当页面 URL 发生变化时(比如调用 history.pushState() 等方法时),返回结果总是当前的。

示例

假设当前页面的 URL 为 http://domain.com/path/file?foo&bar=2,此时:

_.url.parseQuery('foo')  // => ''
_.url.parseQuery('bar')  // => '2'
_.url.parseQuery('absentKey')  // => undefined

_.url.appendParam(url, param)

为给定的 URL 附加新的参数。

参数

  • url -- 字符串。待处理的 URL。
  • param -- 对象。需要附加的 URL 参数(名值对)。

返回值

字符串。已附加 URL 参数的新的 URL。

示例

var url = 'http://domain.com/path/file'
url = _.url.appendParam(url, {foo: 'bar'})  // => 'http://domain.com/path/file?foo=bar'
url = _.url.appendParam(url, {test: 1})  // => 'http://domain.com/path/file?foo=bar&test=1'

_.url.parseUrl(url, [part])

解析 URL 的各个组成部分。URL 各个组成部分的名称及含义如下:

  • protocol -- 协议
  • hostname -- 主机名
  • port -- 端口号
  • host -- 主机(含端口号)
  • pathname -- 路径(含文件名)
  • search -- query string 部分(含开头的 ? 字符)
  • hash -- hash 部分(含开头的 # 字符)

可以看出它们和 location 对象的各个 key 的含义相同。

参数

  • url -- 字符串。需要解析的 URL。若此 URL 不完整,则视为相对路径,以当前页面为基准进行解析。
  • part -- 字符串。可选参数。需要解析 URL 中的特定部分,合法的取值参见上述 “URL 的各个组成部分” 的名称。

返回值

  • 当未指定任何参数时:空对象({})。
  • 当未指定 part 参数时:对象。整个 URL 的解析结果,URL 的各个组成部分以名值对的方式保存。
  • 当指定 part 参数时:字符串。URL 中的指定部分的值。如不存在某个部分,则值为空字符串。

注意事项

  • port 的值并不会被转换为数字。

示例

var url = 'http://domain.com/foo/bar'
_.url.parseUrl(url)  // => {
//     protocol: 'http:',
//     hostname: 'domain.com',
//     port: '',
//     host: 'domain.com',
//     pathname: '/foo/bar',
//     search: '',
//     hash: '',
// }

_.url.parseUrl(url, 'pathname')  // => '/foo/bar'
_.url.parseUrl(url, 'search')  // => ''

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions