Skip to content

引入

ts
import {
  extendUrlParams,
  filterUrlParams,
  formatUrlParams,
  decode,
  stringifyParams,
  addUrlParam,
  decode,
  stringifyParams,
  addUrlParam,
  addUrlParams,
  keepUrlParams,
  removeUrlParams,
  resolveUrlParams,
  getQueryObj,
  composeUrlQuery,
  encodeUrlParam,
  decodeUrlParam,
  getUrlPara
} from 't-comm';

// 不支持 tree-shaking 的项目
import {
  extendUrlParams,
  filterUrlParams,
  formatUrlParams,
  decode,
  stringifyParams,
  addUrlParam,
  decode,
  stringifyParams,
  addUrlParam,
  addUrlParams,
  keepUrlParams,
  removeUrlParams,
  resolveUrlParams,
  getQueryObj,
  composeUrlQuery,
  encodeUrlParam,
  decodeUrlParam,
  getUrlPara
} from 't-comm/lib/url/index';

// 只支持 ESM 的项目
import {
  extendUrlParams,
  filterUrlParams,
  formatUrlParams,
  decode,
  stringifyParams,
  addUrlParam,
  decode,
  stringifyParams,
  addUrlParam,
  addUrlParams,
  keepUrlParams,
  removeUrlParams,
  resolveUrlParams,
  getQueryObj,
  composeUrlQuery,
  encodeUrlParam,
  decodeUrlParam,
  getUrlPara
} from 't-comm/es/url/index';

extendUrlParams(url, removeKeyArr)

描述

拼接额外参数

参数

参数名类型描述
urlstring

地址

removeKeyArrstring

待添加的参数对象

返回:

重新拼接的地址

示例

typescript
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'

filterUrlParams([params])

描述

根据地址长度,进行过滤地址参数,允许指定保留特定参数

参数

参数名类型默认值描述
[params]object{ limit: 1024 }

参数

params.urlnumber

待过滤地址,默认当前页面地址

params.limitnumber

参数长度限制

params.keepKeyarray

指定保留的参数,比如业务参数、框架参数(登录态、统计上报等)

formatUrlParams(url, keepParamsObj)

描述

根据传入的参数,移除原来的所有参数,根据传入的 keepParamsObj 进行重新拼接地址,以 hash 模式返回

参数

参数名类型描述
urlstring

地址

keepParamsObjobject

参数对象

返回:

只有传入参数的地址

示例

typescript
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

decode(str)

描述

多重解码。避免内嵌在外部时地址参数被编码,先进行URL解码再进行HTML字符实体解码

Docgen:
参数

参数名类型描述
strstring

文本

返回:

解码后的文本

stringifyParams(params)

描述

将参数对象转成字符串

Docgen:
参数

参数名类型描述
paramsObject

参数对象

addUrlParam(url, key, value)

描述

小程序不支持URL对象,用字符串拼接方式添加 注意:已有相同key不支持覆盖,会重复添加

Docgen:
参数

参数名描述
url

输入url

key

value

decode(str)

描述

多重解码。避免内嵌在外部时地址参数被编码,先进行URL解码再进行HTML字符实体解码

Docgen:
参数

参数名类型描述
strstring

文本

返回:

解码后的文本

stringifyParams(params)

描述

将参数对象转成字符串

Docgen:
参数

参数名类型描述
paramsObject

参数对象

addUrlParam(url, key, value)

描述

小程序不支持URL对象,用字符串拼接方式添加 注意:已有相同key不支持覆盖,会重复添加

Docgen:
参数

参数名描述
url

输入url

key

value

addUrlParams(url, params, [shouldOverride])

描述

为url添加参数

参数

参数名类型默认值
urlstring
paramsobject
[shouldOverride]booleanfalse

keepUrlParams(url, removeKeyArr)

描述

除保留参数外,一律移除

参数

参数名类型描述
urlstring

地址

removeKeyArrstring

待保留的参数名集合

返回:

重新拼接的地址

示例

typescript
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'

removeUrlParams(url, removeKeyArr)

描述

移除参数

参数

参数名类型描述
urlstring

地址

removeKeyArrstring

待移除的参数名集合

返回:

重新拼接的地址

示例

typescript
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'

resolveUrlParams([url], [key])

描述

提取链接参数,兼容hash模式和history模式,以及拼接异常情况

参数

参数名类型默认值描述
[url]string"''"

地址

[key]string"''"

可选,若不为空,则提取返回该key对应的参数值

返回:

地址参数对象,或者是指定参数值

示例

typescript
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

getQueryObj(url)

描述

url参数变对象

参数

参数名类型描述
urlstring

输入URL

返回: Object

search对象

示例

typescript
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参数添加在后面

参数

参数名类型描述
urlstring

输入URL

queryObjObject

search对象

返回: string

组装后的url

示例

typescript
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)

描述

将对象字符串化

参数

参数名类型描述
objobject

输入对象

返回: string

字符串

示例

typescript
encodeUrlParam({a: 1})

// '%7B%22a%22%3A1%7D'

decodeUrlParam(obj)

描述

将字符串解码,与encodeUrlParam相对

参数

参数名类型描述
objstring

输入字符串

返回: object

对象

示例

typescript
decodeUrlParam('%7B%22a%22%3A1%7D')

// { a: 1 }

描述

获取 Url 参数

参数

参数名类型描述
paraNamestring

参数 key

searchstring

url search 部分

返回:

paraValue

示例

ts
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