SuperAPI AI 工具集

angular-ecosystem

前端与建站

查看项目

更新于 10-15 07:52

技能介绍

该技能是一份 Angular 20+ 生态整合指南,把 Angular 核心、v20 控制流、Signals、CDK、Material 3、Router、Forms、Google Maps、NgRx Signals 与 RxJS 模式统一为一份架构参考文档。

一、核心架构与组件规范 组件层面要求仅使用独立组件(standalone: true),所有组件使用 OnPush 变更检测策略;采用 Signals 优先写法,使用 input()、output()、model()、viewChild() 和 contentChild()(Angular 19+ 语法);控制流使用 @if、@for(需 track item.id)、@switch 和 @defer,避免 *ngIf 与 *ngFor。依赖注入方面,推荐使用 inject(Type) 代替构造函数注入,并在 app.config.ts 中提供全局服务或令牌。

二、状态管理:NgRx Signals 采用 signalStore 模式:每个功能模块或有界上下文定义单一的 signalStore;用 withState 初始化为普通对象(使用 null 而非 undefined);用 withComputed 定义纯响应式派生状态;用 withMethods 处理业务逻辑与状态转换。异步操作使用 rxMethod 处理副作用(API 调用),并按并发需求选择操作符:switchMap 用于搜索、筛选(取消前一次);exhaustMap 用于表单提交(忽略并发点击);concatMap 用于有序顺序操作;mergeMap 用于相互独立的并行操作。错误处理统一使用 @ngrx/operators 的 tapResponse。

三、UI 组件层:Angular Material 3 与 CDK Material Design 3 采用基于令牌的主题,使用 M3 设计令牌(--mat-sys-...)与 CSS 变量,全局样式在 styles.scss 中用现代 SASS mixin 定义,表单使用 <mat-form-field> 配合标准验证模式。CDK 方面:无障碍使用 A11yModule、FocusTrap 和 LiveAnnouncer;浮层使用 OverlayModule 实现自定义对话框、提示与浮动 UI;虚拟滚动用 CdkVirtualScrollViewport 处理超过 100 项的列表;拖放用 @angular/cdk/drag-drop 实现列表排序与看板布局。

四、导航与地图 Router 要求始终使用 loadChildren: () => import(...) 做懒加载,用基于 inject() 的函数式守卫替代类守卫,通过 toSignal(route.params) 将路由参数转为信号。Google Maps 集成要求通过服务动态加载 API 脚本,API 密钥存放在 environment.ts 中(不得硬编码),标记超过 50 个时需使用标记聚合以保证性能。

五、RxJS 与 Signals 互操作 采用边界模式:基础设施/端口层由仓储返回 Observable(用于流式数据);应用/门面层用 toSignal() 转为 Signals;清理使用 takeUntilDestroyed() 或 toSignal() 自动取消订阅;高开销流使用 shareReplay({ bufferSize: 1, refCount: true })。

六、表单、无障碍与限制 表单要求严格类型(FormGroup<T>、FormControl<T>),仅在 touched 后显示错误,通过 onChanges 或显式提交方法同步更新 store。无障碍要求至少达到 WCAG 2.2 AA 级别,优先使用语义化标签(<nav>、<main>、<header>、<footer>),保证键盘导航的 tabindex 与焦点管理,在原生 HTML 不足时使用 aria-label、aria-describedby 与 aria-live。文档声明其为 Black-Tortoise 内所有 Angular 相关开发的唯一事实来源,不符合规范的代码会被 CI 流水线拒绝。关于安装命令、收费方式、价格与具体平台支持等信息,资料中暂未提供。