使用koajs为angular2设置路由的正确方法是什么

What's the right way to set routing for angular2 with koajs

我是 angular2 和 koajs 的新手。也许这是一个愚蠢的问题。

我有一个带有路由 table 的 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), then navigate to a child page (eg: http://localhost:3000/pats/report/settings) 访问我们的应用程序,一切都很好,因为 angular2 应用程序将在内部处理子页面导航,不会向后端发出 http 请求。

但是如果用户直接使用子页面 url 访问我们的应用程序,例如:http://localhost:3000/pats/report/settings,后端 koajs 应用程序将以 404 状态响应,因为它不存在路径 [=29] 的路由=] 在后端。

解决这个问题的正确方法是什么?

我是否应该在后端路由器中为所有客户端子页面路径添加路由并使用 index.html 响应?

我不知道 Koajs,但你需要一些中间件。您的后端需要将这些请求重定向到 localhost:3000/ 但让 URL 保持原样,以便 angular 可以发挥它的魔力!

查看 koajs 的附加包:

另一种选择:使用 Hashbang-URLs ! Angular2 URL-Styles