写作背景
算上练习时候,已进修前端两年了。学问结构很乱,须要有一个网络化的总结。
写作目标
学问总结,交友一些前端的小伙伴。
需求:
要求某些后端的接口,须要前端供应一些特定的要求参数。
注重事项:
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
不足:
1.场景斟酌的不够充足。
2.没有完整运用ES6(indexOf->includes).