t-comm
Version:
专业、稳定、纯粹的工具库
48 lines (43 loc) • 2.07 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var url_formatUrlParams = require('./format-url-params.js');
var url_resolveUrlParams = require('./resolve-url-params.js');
require('@babel/runtime/helpers/slicedToArray');
/**
* 拼接额外参数
* @param {string} url 地址
* @param {string} removeKeyArr 待添加的参数对象
* @returns 重新拼接的地址
* @example
* // 地址是 hash 模式参数
* extendUrlParams('http://www.test.com/#/detail?a=1&b=2&c=3', { d: 4 });
* // => 'http://www.test.com/#/detail?a=1&b=2&c=3&d=4'
* @example
* // 地址 history 模式参数并存
* extendUrlParams('http://www.test.com?a=1&b=2&c=3', { d: 4 });
* // => 'http://www.test.com/?a=1&b=2&c=3&d=4'
* @example
* // 地址 history 模式参数并存 + 强制 history 模式返回
* extendUrlParams('http://www.test.com?a=1&b=2&c=3', { d: 4 }, true);
* // => 'http://www.test.com/?a=1&b=2&c=3&d=4'
* @example
* // hash 模式和 history 模式参数并存
* 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'
* @example
* // 地址是 hash 模式和 history 模式参数并存,且是多个参数
* extendUrlParams('http://www.test.com?d=4&f=6#/detail?a=1&b=2&c=3', { e: 5, g: 7 });
* // => 'http://www.test.com/#/detail?d=4&f=6&a=1&b=2&c=3&e=5&g=7'
*/
function extendUrlParams() {
var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var extParamsObj = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var forceHistoryMode = arguments.length > 2 ? arguments[2] : undefined;
// 获取链接上的所有参数
var urlParamsObj = url_resolveUrlParams.resolveUrlParams(url);
// 合并传入的参数
var keepParamsObj = Object.assign(Object.assign({}, urlParamsObj), extParamsObj);
// 根据合并后的参数集合,重新拼接地址
return url_formatUrlParams.formatUrlParams(url, keepParamsObj, forceHistoryMode);
}
exports.extendUrlParams = extendUrlParams;