Open cssmagic opened 9 years ago
url
举例来说,http://domain.com/path/file?foo&bar=2 中的 foo&bar=2 部分即为 query string。
http://domain.com/path/file?foo&bar=2
foo&bar=2
Query String 的本质是对一些名值对进行编码和序列化之后的结果。而 query string 的解析就是一个反序列化和解码的过程。
Query String 所保存的这些名值对即称作 “URL 参数”。
.parseQuery(queryString)
把 query string 解析为以对象的方式保存的名值对。
queryString
对象。解析结果,以名值对的方式保存。
gearbox.url.parseQuery('foo=1&bar=2') // => {foo: '1', bar: '2'} gearbox.url.parseQuery('foo=&bar=2') // => {foo: '', bar: '2'} gearbox.url.parseQuery('foo&bar=2') // => {foo: '', bar: '2'} gearbox.url.parseQuery('') // => {}
{}
foo=1&bar=true
?foo
&
true
false
null
undefined
foo=&bar=2
foo
foo[]
foo[bar]
.getParam(key)
获取当前页面 URL 的某个 URL 参数的值。
key
字符串或 undefined。对应 URL 参数的值。
假设当前页面的 URL 为 http://domain.com/path/file?foo&bar=2,此时:
gearbox.url.getParam('foo') // => '' gearbox.url.getParam('bar') // => '2' gearbox.url.getParam('absentKey') // => undefined
.parseQuery()
history.pushState()
.appendParam(url, param)
为给定的 URL 附加新的参数。
param
字符串。已附加 URL 参数的新的 URL。
var url = 'http://domain.com/path/file' url = gearbox.url.appendParam(url, {foo: 'bar'}) // => 'http://domain.com/path/file?foo=bar' url = gearbox.url.appendParam(url, {test: 1}) // => 'http://domain.com/path/file?foo=bar&test=1'
.removeHashFromUrl(url)
把 URL 中的 hash 部分去除。
字符串。去除 hash 之后的 URL。若未传入参数则返回空字符串。
var url = 'http://domain.com/foo#bar' gearbox.url.removeHashFromUrl(url) // => 'http://domain.com/foo'
.getHashFromUrl(url)
获取 URL 中的 hash 部分。获取结果包含开头的 # 字符。
#
如果需要得到当前页面 URL 的 hash 部分,直接使用 location.hash 即可。
location.hash
字符串。若传入的 URL 不包含 hash 部分则返回空字符串;若未传入参数则返回空字符串。
var url = 'http://domain.com/foo#bar' gearbox.url.getHashFromUrl(url) // => '#bar'
.isHash()
gearbox.str.isHash() 的别名。
gearbox.str.isHash()
.stripHash()
gearbox.str.stripHash() 的别名。
gearbox.str.stripHash()
.parse(url)
别名: .parseUrl() 此接口的行为与 Node.js 内置的 url 模块 的 .parse() 接口的功能保持基本一致,但仍然有细微差异,详见 “注意事项” 部分。
别名: .parseUrl()
.parseUrl()
此接口的行为与 Node.js 内置的 url 模块 的 .parse() 接口的功能保持基本一致,但仍然有细微差异,详见 “注意事项” 部分。
.parse()
解析 URL 的各个要素,解析结果以对象的方式输出。举例来说,当传入以下 URL 时:
'http://user:pass@domain.com:8080/path/file?query=string#hash'
解析结果中各个 key 的含义和值如下:
href
protocol
'http:'
slashes
host
'domain.com:8080'
auth
'user:pass'
hostname
'domain.com'
port
'8080'
pathname
'/path/file'
search
?
'?query=string'
path
'/path/file?query=string'
query
'query=string'
hash
可以看出它们涵盖了 location 对象的各个 key,且含义相同。
location
对象。整个 URL 的解析结果,URL 的各个要素部分以名值对的方式保存。
当参数不合法时,返回空对象({})。
//foo/bar
/bar
.format(parts)
别名: .composeUrl() 此接口的行为与 Node.js 内置的 url 模块的 .format() 接口的功能保持基本一致。
别名: .composeUrl()
.composeUrl()
此接口的行为与 Node.js 内置的 url 模块的 .format() 接口的功能保持基本一致。
.format()
根据提供的 URL 各个要素,构造完整的 URL。URL 各个组成部分的名称及含义同 .parse() 接口的描述。
parts
字符串。构造出的完整 URL。
当参数不合法时,返回空字符串。
var urlParts = { protocol: 'http:', host: 'domain.com', pathname: '/foo/bar' } gearbox.url.format(urlParts) // => 'http://domain.com/foo/bar'
http
https
ftp
gopher
file
/
parseInt(port, 10)
0
location.protocol
location.hostname
与 Underscore.ext 的差异:
.isFullUrl()
.isAbsolutePath()
API 文档 -
url
模块术语
Query String
举例来说,
http://domain.com/path/file?foo&bar=2
中的foo&bar=2
部分即为 query string。Query String 的本质是对一些名值对进行编码和序列化之后的结果。而 query string 的解析就是一个反序列化和解码的过程。
URL 参数
Query String 所保存的这些名值对即称作 “URL 参数”。
JavaScript 接口
.parseQuery(queryString)
把 query string 解析为以对象的方式保存的名值对。
参数
queryString
-- 字符串。需要解析的 query string。返回值
对象。解析结果,以名值对的方式保存。
示例
注意事项
{}
)。foo=1&bar=true
,不包含问号。如果此接口接收的参数以问号开头,则会被视为第一个 URL 参数的一部分,因为?foo
是一个合法的 URL 参数名。&
字符会被视为一个。true
、false
、null
、undefined
或数字时,总是以字符串的方式保存,不会自动转换数据类型。foo&bar=2
或foo=&bar=2
中的foo
),其值将解析为空字符串。已知问题
foo[]
或foo[bar]
都不会被视为特殊含义,只会视为普通的 key。.getParam(key)
获取当前页面 URL 的某个 URL 参数的值。
参数
key
-- 字符串。需要获取的 URL 参数名,忽略大小写。返回值
字符串或
undefined
。对应 URL 参数的值。示例
假设当前页面的 URL 为
http://domain.com/path/file?foo&bar=2
,此时:注意事项
.parseQuery()
方法。history.pushState()
等方法时),返回结果总是当前的。.appendParam(url, param)
为给定的 URL 附加新的参数。
参数
url
-- 字符串。待处理的 URL。param
-- 对象。需要附加的 URL 参数(名值对)。返回值
字符串。已附加 URL 参数的新的 URL。
示例
注意事项
param
参数中的 key 并不会覆盖url
参数中已有的同名 key,只是追加一个同名参数。.removeHashFromUrl(url)
把 URL 中的 hash 部分去除。
参数
url
-- 字符串。待处理的 URL,可以是完整的 URL,也可以是相对路径。若传入其它类型的数值,将被转换为字符串。返回值
字符串。去除 hash 之后的 URL。若未传入参数则返回空字符串。
示例
.getHashFromUrl(url)
获取 URL 中的 hash 部分。获取结果包含开头的
#
字符。如果需要得到当前页面 URL 的 hash 部分,直接使用
location.hash
即可。参数
url
-- 字符串。待处理的 URL,可以是完整的 URL,也可以是相对路径。若传入其它类型的数值,将被转换为字符串。返回值
字符串。若传入的 URL 不包含 hash 部分则返回空字符串;若未传入参数则返回空字符串。
示例
别名
.isHash()
gearbox.str.isHash()
的别名。.stripHash()
gearbox.str.stripHash()
的别名。暂未实现的接口 :warning:
.parse(url)
解析 URL 的各个要素,解析结果以对象的方式输出。举例来说,当传入以下 URL 时:
解析结果中各个 key 的含义和值如下:
href
-- 完整 URL 值。协议名和域名会被转换为全小写。 值:(同传入的 URL)protocol
-- 协议。 值:'http:'
slashes
-- 布尔值,此协议是否需要双斜杠。 值:true
host
-- 主机(含端口号)。域名会被转换为全小写。 值:'domain.com:8080'
auth
-- 身份验证信息。 值:'user:pass'
hostname
-- 主机名(不含端口号)。域名会被转换为全小写。 值:'domain.com'
port
-- 端口号。它不会被转换为数字。 值:'8080'
pathname
-- 路径(含文件名)。 值:'/path/file'
search
-- query string 部分(含开头的?
字符)。参数名和值不会被解码。 值:'?query=string'
path
-- 路径加上 query string 部分。参数名和值不会被解码。 值:'/path/file?query=string'
query
-- query string 部分(不含开头的?
字符)。 值:'query=string'
hash
-- hash 部分(含开头的#
字符)。 值:'query=string'
可以看出它们涵盖了
location
对象的各个 key,且含义相同。参数
url
-- 字符串。需要解析的 URL。返回值
对象。整个 URL 的解析结果,URL 的各个要素部分以名值对的方式保存。
当参数不合法时,返回空对象(
{}
)。注意事项
//foo/bar
将会被视为 “foo
主机下的/bar
路径”。.format(parts)
根据提供的 URL 各个要素,构造完整的 URL。URL 各个组成部分的名称及含义同
.parse()
接口的描述。参数
parts
-- 对象。URL 的各个要素的名值对。返回值
字符串。构造出的完整 URL。
当参数不合法时,返回空字符串。
示例
注意事项
href
字段将被忽略。path
字段将被忽略。protocol
字段如果没有用冒号结尾,则会自动补上。对于这些协议(http
、https
、ftp
、gopher
、file
),还会自动补上双斜杠。slashes
字段来强制自动补上双斜杠。auth
字段,则会被使用。host
时,将忽略hostname
和port
字段。search
时,将忽略query
字段。pathname
应以/
开头;不以/
开头则会自动补上。search
应以?
开头;不以?
开头则会自动补上。hash
应以#
开头;不以#
开头则会自动补上。host
、hostname
、pathname
中的?
和#
字符会被编码;search
中的#
字符会被编码。port
值在经过parseInt(port, 10)
转换后必须为0
或正整数,否则均视为0
。protocol
-- 若省略则取当前页面的location.protocol
。auth
-- 若省略则不输出。host
-- 若省略则取hostname
和port
。hostname
-- 若省略则取当前页面的location.hostname
。port
-- 若省略则不输出。pathname
-- 若省略则取根目录(/
)。search
-- 若省略则取query
。query
-- 若省略则不输出。hash
-- 若省略则不输出。