解析Url地址(绝对路径解析)

/**
 * 绝对路径Url解析
 * @param {String} url 要解析的url,Url必须带协议http或者https
 * @returns
 */
export const parseURL = (url) => {
  let a = document.createElement('a')
  a.href = url
  return {
    source: url,
    protocol: a.protocol.replace(':', ''),
    host: a.host,
    hostname: a.hostname,
    port: a.port,
    query: a.search,
    params: (function() {
      let params = {}
      let hashArr = a.search.replace(/^\?/, '').split('&')
      for (let i = 0; i < hashArr.length; i++) {
		let item = hashArr[i].split('=')
		params[item[0]] = item[1] || ''
	  }
      return params
    })(),
    file: (a.pathname.match(/\/([^/?#]+)$/i) || '')[1],
    hash: a.hash.replace('#', ''),
    path: a.pathname.replace(/^([^/])/, '/$1'),
    relative: (a.href.match(/tps?:\/\/[^/]+(.+)/) || '')[1],
    segments: a.pathname.replace(/^\//, '').split('/')
  }
}