2016-08-23 7 views
0

Я новичок в angular2 и koajs. Может быть, это глупый вопрос.Каков правильный способ установки маршрутизации для angular2 с koajs

У меня есть angular2 приложение с таблицей маршрутизации, как показано ниже:

const appRoutes: Routes = [ 
    { 
    path: 'pats/report/settings', 
    component: PatsReportSettingsComponent 
    }, 
    { 
    path: 'pats/report/:id', 
    component: PatsReportComponent, 
    pathMatch: 'full' 
    }, 
    { 
    path: 'pats/report/login', 
    component: PatsLoginComponent, 
    pathMatch: 'full' 
    }, 
    { 
    path: '.', 
    redirectTo: 'pats/report/login', 
    pathMatch: 'full' 
    },  
    { 
    path: '**', 
    component: Pats404PageComponent, 
    pathMatch: 'full' 
    }, 
]; 

Если доступ пользователей наше приложение через корневой URL (http://localhost:3000), затем перейдите на страницу ребенка (например: http://localhost:3000/pats/report/settings), все отлично, поскольку приложение angular2 будет обрабатывать внутреннюю навигацию по страницам и не будет выдавать HTTP-запрос на бэкэнд.

Но если пользователь обращается к нашему приложению с прямым URL-адресом для детей, например: http://localhost:3000/pats/report/settings, приложение backend koajs ответит с статусом 404, так как в нем нет пути для «pats/report/settings» на бэкэнд.

Каков правильный путь для решения этой проблемы?

Должен ли я добавлять маршрут для всех путей дочерней страницы клиента в базовом маршрутизаторе и отвечать с помощью index.html?

ответ

1

Я не знаю Koajs, но вам нужно некоторое промежуточное ПО. Ваш бэкэнд должен перенаправить эти запросы на localhost:3000/, но пусть URL-адрес, как есть, так что угловой может сделать свою магию!

См эти дополнительные пакеты для koajs:

Другой вариант: использование Hashbang-адреса! Angular2 URL-Styles

+0

спасибо, я проверю – ricky

+0

Checked [Angular2 URL-стили] (https://angular.io/docs/ts/latest/guide/router.html#!#browser-url-styles), и кажется, что URL-адрес Hashbang не рекомендуется. – ricky

+0

Да, просто хотел показать вам этот вариант. Лучшей практикой будет правильная обработка «неизвестных URL-адресов» через ваш koajs-backend. – mxii