You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular路由导航实现及app.routes.ts与app-routing.module.ts差异咨询

Angular 17中app.routes.ts与app-routing.module.ts的区别

1. 两种文件的核心差异

  • app-routing.module.ts:是Angular 16及以前版本的传统路由配置方式,属于NgModule架构下的产物。它是一个独立的NgModule,需要导入RouterModule并通过RouterModule.forRoot()注册路由数组,还要在模块的imports和exports中做相应配置,最终需要在根AppModule中导入这个路由模块才能生效。
    典型代码结构:

    import { NgModule } from '@angular/core';
    import { RouterModule, Routes } from '@angular/router';
    
    const routes: Routes = [/* 路由规则配置 */];
    
    @NgModule({
      imports: [RouterModule.forRoot(routes)],
      exports: [RouterModule]
    })
    export class AppRoutingModule { }
    
  • app.routes.ts:是Angular 14+引入、Angular 17默认启用的独立路由配置,适配standalone(独立组件)架构。它直接导出一个Routes类型的数组,不需要包裹在NgModule中,只需要在main.ts或根组件中通过provideRouter()方法注册路由即可生效。
    典型代码结构:

    import { Routes } from '@angular/router';
    
    export const routes: Routes = [/* 路由规则配置 */];
    

    注册示例(main.ts中):

    import { bootstrapApplication } from '@angular/platform-browser';
    import { provideRouter } from '@angular/router';
    import { routes } from './app/app.routes';
    import { AppComponent } from './app/app.component';
    
    bootstrapApplication(AppComponent, {
      providers: [provideRouter(routes)]
    });
    

2. 为什么你看到的文件不一致

你的Angular版本是17.0.8,该版本默认创建的是独立组件项目,因此会生成app.routes.ts作为路由配置文件。而《英雄之旅》教程可能基于Angular 16及以前的版本,或者教程中选择了启用NgModule的项目模板,所以使用的是app-routing.module.ts。

3. 核心用途完全一致

两种文件的核心功能都是定义应用的路由规则,包括路径映射、组件关联、路由守卫、解析器等配置,最终都是为了实现Angular应用的页面导航功能,只是封装形式适配了不同的项目架构:

  • NgModule风格的路由适合传统的模块式项目;
  • 独立路由配置更适配Angular的独立组件生态,减少模块嵌套,简化代码结构。

内容的提问来源于stack exchange,提问作者tab269

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:01:09