Router на чистом JS(single page app)

529
06 октября 2018, 20:10

Пытаюсь написать роутер. Он есть написанный и все в принципе в нем работает нормально, но когда я просто вставляю url отличный от маппинга '/', то появляется 404.

Router:

 export class Router {
    constructor() {
        this.controllers = {
            '/': 'defaultController',
            '/user': 'userController',
            '/messages': 'messageController'
        };
        window.addEventListener('load', this.determineController.bind(this));
        document.getElementById('button').addEventListener('click', this.determineController.bind(this));
    }
    setContainer(container) {
        this.container = container;
    }
    determineController(event) {
        event.preventDefault();
        let allPath;
        let mapping;
        if('load' === event.type) {
            allPath = window.location.pathname;
            let regex = new RegExp('/Shop/src/main/webapp/view(.*)');
            mapping = regex.exec(allPath)[1];
        } else {
            mapping = event.target.attributes['router'].value;
            allPath = '/Shop/src/main/webapp/view' + mapping;
        }
        window.history.pushState({}, "Cocaine", allPath);
        this.container.determineAction(this.controllers[mapping]);
    }
    addListenerOnElement(element, eventElement) {
        element.addEventListener('click', this.determineController.bind(this));
    }
}

Пример запроса:

http://localhost:63342/Shop/src/main/webapp/view/messages(404)
http://localhost:63342/Shop/src/main/webapp/view(200)

Проект пишу в Intellij IDEA.

Как правильно поступить?

READ ALSO
Ajax возвращает ошибку 502/500

Ajax возвращает ошибку 502/500

подскажите пж-таЕсть админка, в админке кнопка вкл/выкл которая отправляет в контроллер get запрос

166
Резкая анимация на iOS и Android

Резкая анимация на iOS и Android

Я сделала анимацию при клике, и на компьютере она выглядит хорошоПроблема в том что на iOS и Android девайсах анимация очень резкая, и выглядит...

222
Как сделать плавный скролл внутри блока?

Как сделать плавный скролл внутри блока?

Есть готовый код который при нажатии на кнопки скроллит содержимое внутри блока (На чистом js)Необходимо сделать при клике плавную прокрутку...

203
Что делать с SEO в SPA приложении?

Что делать с SEO в SPA приложении?

На текущий момент есть блог в виде Rails приложенияСтраницы проиндексированы поисковиками

188