UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

48 lines (43 loc) 2.07 kB
'use strict'; 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;