角度路由 - 路径顺序重要吗?

psj*_*j01 6 angular-routing angular

app.module.ts 文件中列出的路径顺序重要吗?例如...

   RouterModule.forRoot([
      {path:'',component:HomeComponent},
      {path:'followers',component:GithubFollowersComponent},
      {path:'followers/:username/:userid',component:GithubProfileComponent},
      {path:'posts',component:PostsComponent},
      {path:'**',component:NotFoundComponent}
    ])
Run Code Online (Sandbox Code Playgroud)

对比..

  RouterModule.forRoot([
      {path:'',component:HomeComponent},
      {path:'followers/:username/:userid',component:GithubProfileComponent},
      {path:'followers',component:GithubFollowersComponent},
      {path:'posts',component:PostsComponent},
      {path:'**',component:NotFoundComponent}
    ])
Run Code Online (Sandbox Code Playgroud)

我正在看一个教程,它说顺序很重要..但我尝试了两种方法,它们似乎都按预期工作......

如果我将通配符路径( ** )移到顶部,那么是的,我确实注意到了差异。但是对于其他人来说,顺序根本不重要吗?还是我在这里遗漏了什么?....

Rhu*_*orl 8

其他路径完全不同,所以不,顺序对这些无关紧要。路由引擎不会混淆followersfollowers/:username/:userid- 正如Angular 指南指出的那样,:username并且:userid是必需的参数,因此需要存在,如followers/testuser/10.

确实事的时候两条路线冲突寿,如posts**。该路径/posts将被两条路线匹配,第一个获胜。

这就是通配符位于末尾的原因。作为基本规则,始终尝试按最具体到最不具体的顺序进行排序。