- 引入
- resolveUrlParams([url], [key])
- formatUrlParams(url, keepParamsObj, [forceHistoryMode])
- extendUrlParams(url, extParamsObj, [forceHistoryMode])
- removeUrlParams(url, removeKeyArr)
- keepUrlParams(url, keepKeyArr, [forceHistoryMode])
- filterUrlParams([params])
- getQueryObj(url)
- composeUrlQuery(url, queryObj)
- encodeUrlParam(obj)
- decodeUrlParam(obj)
- getUrlPara(paraName, search)
# 引入
import {
resolveUrlParams,
formatUrlParams,
extendUrlParams,
removeUrlParams,
keepUrlParams,
filterUrlParams,
getQueryObj,
composeUrlQuery,
encodeUrlParam,
decodeUrlParam,
getUrlPara
} from 't-comm';
// or
import {
resolveUrlParams,
formatUrlParams,
extendUrlParams,
removeUrlParams,
keepUrlParams,
filterUrlParams,
getQueryObj,
composeUrlQuery,
encodeUrlParam,
decodeUrlParam,
getUrlPara
} from 't-comm/lib/url/index';
# resolveUrlParams([url], [key])
描述:
提取链接参数,兼容hash模式和history模式,以及拼接异常情况
参数:
参数名 | 类型 | 默认值 | 描述 |
---|---|---|---|
[url] | string | "''" | 地址 |
[key] | string | "''" | 可选,若不为空,则提取返回该key对应的参数值 |
返回:
地址参数对象,或者是指定参数值
示例
const url = 'https://igame.qq.com?name=mike&age=18#/index?from=china&home=china'
const params = resolveUrlParams(url); // { from: 'china', home: 'china', name: 'mike', age: 18 }
const paramsAge = resolveUrlParams(url, 'age'); // 18
# formatUrlParams(url, keepParamsObj, [forceHistoryMode])
描述:
根据传入的参数,移除原来的所有参数,根据传入的 keepParamsObj 进行重新拼接地址,以 hash 模式返回
参数:
参数名 | 类型 | 描述 |
---|---|---|
url | string | 地址 |
keepParamsObj | object | 参数对象 |
[forceHistoryMode] | boolean | 是否强制 history 模式 |
返回:
只有传入参数的地址
示例
const url1 = formatUrlParams('http://www.test.com?a=1&b=2&c=3', { e: 5 }); // http://www.test.com/#/?e=5
const url2 = formatUrlParams('http://www.test.com?a=1&b=2&c=3#/detail?d=4', { f: 5 }); // http://www.test.com/#/detail?f=5
# extendUrlParams(url, extParamsObj, [forceHistoryMode])
描述:
拼接额外参数
参数:
参数名 | 类型 | 描述 |
---|---|---|
url | string | 地址 |
extParamsObj | object | 待添加的参数对象 |
[forceHistoryMode] | boolean | 是否强制 history 模式 |
返回:
重新拼接的地址
示例
const url1 = extendUrlParams('http://www.test.com?a=1&b=2&c=3#/detail?d=4', { e: 5 }); // 'http://www.test.com/#/detail?a=1&b=2&c=3&d=4&e=5'
# removeUrlParams(url, removeKeyArr)
描述:
移除参数
参数:
参数名 | 类型 | 描述 |
---|---|---|
url | string | 地址 |
removeKeyArr | string | 待移除的参数名集合 |
返回:
重新拼接的地址
示例
const url = removeUrlParams('http://www.test.com/#/detail?a=1&b=2&c=3', ['a', 'b']); // 'http://www.test.com/#/detail?c=3'
const url2 = removeUrlParams('http://www.test.com?d=4&f=6#/detail?a=1&b=2&c=3', ['a', 'd']); // 'http://www.test.com/#/detail?b=2&c=3&f=6'
# keepUrlParams(url, keepKeyArr, [forceHistoryMode])
描述:
除保留参数外,一律移除
参数:
参数名 | 类型 | 描述 |
---|---|---|
url | string | 地址 |
keepKeyArr | string | 待保留的参数名集合 |
[forceHistoryMode] | boolean | 是否强制 history 模式 |
返回:
重新拼接的地址
示例
const url = keepUrlParams('http://www.test.com?a=1&b=2&c=3#/detail?d=4', ['a', 'd']); // 'http://www.test.com/#/detail?a=1&d=4'
# filterUrlParams([params])
描述:
根据地址长度,进行过滤地址参数,允许指定保留特定参数
参数:
参数名 | 类型 | 默认值 | 描述 |
---|---|---|---|
[params] | object | { limit: 1024 } | 参数 |
params.url | number | 待过滤地址,默认当前页面地址 | |
params.limit | number | 参数长度限制 | |
params.keepKey | array | 指定保留的参数,比如业务参数、框架参数(登录态、统计上报等) |
# getQueryObj(url)
描述:
url参数变对象
参数:
参数名 | 类型 | 描述 |
---|---|---|
url | string | 输入URL |
返回: Object
search对象
示例
const res = getQueryObj('https://igame.qq.com?name=mike&age=18&feel=cold&from=China');
console.log(res);
{
name: 'mike',
age: '18',
feel: "cold",
from: 'China',
}
# composeUrlQuery(url, queryObj)
描述:
组装url
参数,将search参数添加在后面
参数:
参数名 | 类型 | 描述 |
---|---|---|
url | string | 输入URL |
queryObj | Object | search对象 |
返回: string
组装后的url
示例
composeUrlQuery('https://baidu.com', {
name: 'mike',
feel: 'cold',
age: '18',
from: 'test',
});
// https://baidu.com?name=mike&feel=cold&age=18&from=test
composeUrlQuery('https://baidu.com?gender=male', {
name: 'mike',
feel: 'cold',
age: '18',
from: 'test',
});
// https://baidu.com?gender=male&name=mike&feel=cold&age=18&from=test
# encodeUrlParam(obj)
描述:
将对象字符串化
参数:
参数名 | 类型 | 描述 |
---|---|---|
obj | object | 输入对象 |
返回: string
字符串
示例
encodeUrlParam({a: 1})
// '%7B%22a%22%3A1%7D'
# decodeUrlParam(obj)
描述:
将字符串解码,与encodeUrlParam
相对
参数:
参数名 | 类型 | 描述 |
---|---|---|
obj | string | 输入字符串 |
返回: object
对象
示例
decodeUrlParam('%7B%22a%22%3A1%7D')
// { a: 1 }
# getUrlPara(paraName, search)
描述:
获取 Url 参数
参数:
参数名 | 类型 | 描述 |
---|---|---|
paraName | string | 参数 key |
search | string | url search 部分 |
返回:
paraValue
示例
getUrlPara('gender', '?gender=male&name=mike&feel=cold&age=18&from=test')
// male
getUrlPara('age', '?gender=male&name=mike&feel=cold&age=18&from=test')
// 18