function parseURL (url) {
var pU = url.split('/')
.filter((i, ind, arr)=> i.length && i.indexOf('?') === -1),
search = url.split('?')[1] || null,
s = search && search.split('&').reduce((a,c) => {
var i = c.split('=');
a[i[0]]= i[1];
return a;
}, {});
return {
protocol: pU[0].slice(0,-1),
host: pU[1],
pathname: '/' + pU.slice(2).join('/') + '/',
searchFull: '?' + search,
search: s
}
}
console.log(parseURL ('https://codepen.io/KorniloFF/pen/qgMVem?editors=0012'));
Простите, времени было мало для того, чтобы сделать правильную оптимизацию хвостовой рекурсии. 10 дней почти без сна, чтобы сделать JS с чистого листа, заставить его «выглядеть как Java» (я сделал, чтобы он выглядел как C), и тайком протащить туда его спасительные фишки: first class functions (замыкания сделал позже, но они были частью плана сразу) и прототипы (примерно как в языке Self).
Вот основные этапы этого процесса:
Обработка HTML для создания дерева DOM.
Создание дерева рендеринга.
Расчёт параметров расположения элементов дерева рендеринга на экране, формирование макета страницы.
Визуализация (отрисовка) дерева рендеринга.
www.pvsm.ru/javascript/276021