关于 angular-best-practices-v20
面向 Angular 20 及以上版本应用的性能优化指南,供开发、重构和代码审查时参考。指南按优先级组织 8 类规则,覆盖 Signals、惰性加载、模板和 SSR 等现代特性。
主要功能
- 01按优先级整理 8 类优化规则
- 02Signals 与信号式输入输出
- 03惰性加载和 @defer
- 04RxJS 与订阅清理
- 05模板性能和原生控制流
- 06HTTP、表单及 SSR 优化
适用场景
- 01编写 Angular 20+ 组件
- 02优化 Angular 应用性能
- 03审查 Signals 或 RxJS 用法
- 04改进 SSR 与渐进式水合
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ develite98/ angular-best-practices --skill angular-best-practices-v20安装后在 Claude Code 中输入/angular-best-practices-v20确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonrules/_sections.mdbundle-defer-third-party.mdbundle-defer.mdbundle-lazy-routes.mdbundle-preload.mdbundle-standalone.mdchange-signals.mdcomponent-signal-io.mddi-factory-providers.mddi-injection-token.mddi-provided-in-root.mddirective-host-composition.mdforms-reactive.mdhttp-interceptors.mdhttp-resource.mdhttp-transfer-state.mdrouting-signal-inputs.mdrxjs-async-pipe.mdrxjs-takeuntil.mdsignal-computed-pure.mdsignal-effect-patterns.mdsignal-linkedsignal.mdssr-hydration.mdtemplate-ng-optimized-image.mdtemplate-pure-pipes.mdtemplate-trackby.md详细介绍
Angular 最佳实践(v20+)
Angular 20+ 应用的综合性能优化指南,涵盖 Signals、httpResource、信号输入/输出、@defer 块和原生控制流语法等现代功能。包含 8 个类别中的 35+ 条规则,按影响程度排序,以指导自动化重构和代码生成。
适用场景
在以下情况下参考这些指南:
- 编写新的 Angular 20+ 组件
- 使用 Signals 管理响应式状态(signal、computed、linkedSignal、effect)
- 使用 httpResource/resource 获取数据
- 使用信号输入/输出替代装饰器
- 使用 @defer 实现延迟加载
- 使用原生控制流(@if、@for、@switch)
- 使用增量水合实现 SSR
- 检查代码中的性能问题
主要功能(v20+)
- Signals - 细粒度响应式(signal、computed、linkedSignal、effect)
- httpResource - 基于信号的 HTTP,自动管理加载状态
- 信号输入/输出 - 使用 input()、output() 替代装饰器
- @defer - 模板级延迟加载,支持水合触发器
- @for / @if - 原生控制流,必须指定 track
- 默认独立模式 - 无需设置 standalone: true
- 宿主绑定 - 使用 host 对象替代 @HostBinding 装饰器
- 函数式拦截器 - 更简洁的 HTTP 拦截器
- takeUntilDestroyed - 内置订阅清理
- 增量水合 - 用于 SSR 的 @defer (hydrate on ...)
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 变更检测 | 严重 | change- |
| 2 | 打包与延迟加载 | 严重 | bundle- |
| 3 | RxJS 优化 | 高 | rxjs- |
| 4 | 模板性能 | 高 | template- |
| 5 | 依赖注入 | 中高 | di- |
| 6 | HTTP 与缓存 | 中 | http- |
| 7 | 表单优化 | 中 | forms- |
| 8 | 通用性能 | 低中 | ssr- |
快速参考
1. 变更检测(严重)
change-signals- 使用 Signals 而非 BehaviorSubject 管理响应式状态change-onpush- 使用 OnPush 变更检测策略change-detach-reattach- 对高开销操作分离变更检测器change-run-outside-zone- 在 NgZone 外运行非 UI 代码component-signal-io- 使用信号输入/输出替代 @Input/@Output 装饰器signal-computed-pure- 保持 computed() 纯净,不产生副作用signal-effect-patterns- 正确使用 effect(),避免反模式signal-linkedsignal- 使用 linkedSignal 管理派生且可写的状态
2. 打包与延迟加载(严重)
bundle-standalone- 使用独立组件(v20+ 中为默认模式)bundle-lazy-routes- 使用 loadComponent/loadChildren 延迟加载路由bundle-defer- 对高开销组件使用 @defer 块bundle-preload- 在悬停/聚焦时预加载路由,提升感知速度bundle-no-barrel-imports- 避免使用 barrel 文件,改用直接导入
3. RxJS 优化(高)
rxjs-async-pipe- 使用 async 管道替代手动订阅rxjs-takeuntil- 使用 takeUntilDestroyed 自动清理rxjs-share-replay- 共享可观察对象,避免重复请求rxjs-operators- 使用高效的 RxJS 操作符rxjs-mapping-operators- 使用正确的映射操作符(switchMap 与 exhaustMap)rxjs-no-nested-subscribe- 避免嵌套订阅
4. 模板性能(高)
template-trackby- 在 @for 循环中使用 track 函数(v20+ 中为必需)template-pure-pipes- 使用纯管道执行高开销转换template-ng-optimized-image- 使用 NgOptimizedImage 优化图像template-no-function-calls- 避免在模板中调用函数template-virtual-scroll- 对大型列表使用虚拟滚动
5. 依赖注入(中高)
di-provided-in-root- 单例服务使用 providedIn: 'root'di-injection-token- 非类依赖项使用 InjectionTokendi-factory-providers- 复杂初始化使用工厂提供者directive-host-composition- 使用 hostDirectives 进行组合
6. HTTP 与缓存(中)
http-resource- 使用 httpResource/resource 进行基于信号的数据获取http-interceptors- 使用函数式拦截器处理横切关注点http-transfer-state- 使用 TransferState 进行 SSR 水合routing-signal-inputs- 使用基于信号的路由输入
7. 表单优化(中)
forms-reactive- 使用带类型的 FormGroup 构建响应式表单
8. 通用性能优化(低至中)
ssr-hydration- 使用 @defer 进行增量水合(在……时水合)perf-memory-leaks- 防止内存泄漏(计时器、监听器、订阅)perf-web-workers- 将繁重的计算任务转移到 Web Workersarch-smart-dumb-components- 使用 Smart/Dumb 组件模式
使用方法
阅读各规则文件,了解详细说明和代码示例:
rules/change-signals.md
rules/bundle-defer.md
rules/http-resource.md
每个规则文件都包含:
- 简要说明其重要性
- 错误代码示例及说明
- 正确代码示例及说明
- 补充背景信息和参考资料
完整汇编文档
如需查看包含所有详细规则的完整指南,请参阅:AGENTS.md
评论
支持 Markdown