前端常用的小函数(1)---解析url
写作背景
算上实习时间,已经学习前端两年了。知识结构很乱,需要有一个网络化的总结。写作目的
知识总结,结交一些前端的小伙伴。需求:
请求某些后端的接口,需要前端提供一些特定的请求参数。注意事项:
1.解析的是否为普通的url (有时候也会解析带hash的url)。2.url 中是否有空格等字符串
知识罗列:
1.数组的扁平化处理2.正则匹配
3.模板字符串拼接
$(function() { const $input = $(".input"); const $queriesContainer = $(".queries-container"); const testUrl = "url"; const trimUrl = str => str.replace(/\s+/g, ""); const getUrlQueries = u => { // 去除url 中的空格 const url = trimUrl(u); if (!(url && url.includes("?"))) return ""; const startPoint = url.indexOf("?") + 1; // 注意React使用hash router const endPoint = url.indexOf("#") > -1 ? url.indexOf("#") : url.length + 1; const urlSegment = url.slice(startPoint, endPoint); return urlSegment.split("&").reduce((result, item) => { const tmp = item.split("="); result[tmp[0]] = tmp[1]; return result; }, {}); }; const renderUrlQueries = queries => Object.entries(queries).reduce((result, item, currentIndex) => { result += `<li class="list-query">${currentIndex + 1}. <span class="key">${ item[0] }</span> : <span class="value">${item[1]}</span></li>`; return result; }, ""); const getRender = () => { const url = $input.val(); const queries = getUrlQueries(url); $queriesContainer.html(renderUrlQueries(queries)); }; const init = () => { $input.val(testUrl); getRender(); }; init(); $input.on("input", () => getRender()); });
在线demo
不足:
2.没有完全使用ES6(indexOf->includes).
相关推荐
往后余生 2020-09-17
CXsilent 2020-09-16
webgm 2020-08-16
Lophole 2020-06-28
sqliang 2020-06-14
xcguoyu 2020-06-13
徐建岗网络管理 2020-06-11
前端开发Kingcean 2020-06-11
cbao 2020-06-10
yezitoo 2020-06-06
bigname 2020-06-04
前端开发Kingcean 2020-05-29
xiaofanguan 2020-05-29
ELEMENTS爱乐小超 2020-05-28
皖林 2020-05-11
wbczyh 2020-05-03
zuihaobushi 2020-04-30