Angular 基础
Angular 是由 Google 维护的、用于构建 Web 应用的 TypeScript 框架(含路由、HTTP、表单、依赖注入等)。当前文档以 Angular 17+ 为主线:独立组件(Standalone)、内置控制流(@if / @for)、Signals。前置:JavaScript 基础、TypeScript、HTML。
可与 Vue 基础、React 基础 对照:Angular 是开箱即用的全栈前端框架,默认 TypeScript,变更检测与 依赖注入 为核心机制。
Angular 是什么、不是什么
| 说明 | |
|---|---|
| 是 | 组件 + 模板;DI 管理服务;官方 CLI、Router、HttpClient、表单模块 |
| 不是 | 仅 UI 库(对比 React);默认不用 JSX(使用 HTML 模板 + 指令) |
与 AngularJS(1.x)的区别
AngularJS(1.x) 与 Angular(2+) 是完全不同的框架,API 与架构不兼容。本文档中的「Angular」均指 Angular 2 及以后 的版本线。
独立组件与引导(Standalone)
Angular 17 起,CLI 新建应用默认生成 standalone 组件(standalone: true),无需 NgModule 包裹根模块即可启动:
// main.ts
import { bootstrapApplication } from "@angular/platform-browser";
import { AppComponent } from "./app/app.component";
import { provideRouter } from "@angular/router";
import { routes } from "./app/app.routes";
bootstrapApplication(AppComponent, {
providers: [provideRouter(routes)],
});
// app.component.ts
import { Component } from "@angular/core";
import { RouterOutlet } from "@angular/router";
@Component({
selector: "app-root",
standalone: true,
imports: [RouterOutlet],
template: `<router-outlet />`,
})
export class AppComponent {}
既有 NgModule 项目仍可维护;新功能优先采用 Standalone + import 在组件上声明依赖。
CLI 速览
npm install -g @angular/cli
ng new my-app --style=css --routing
cd my-app && ng serve
| 命令 | 作用 |
|---|---|
ng generate component foo | 生成组件 |
ng generate service bar | 生成服务 |
ng build | 生产构建 |
ng test | 单元测试(默认 Karma + Jasmine) |
详见 工程化。
核心概念速览
| 概念 | 说明 |
|---|---|
| 组件 | @Component:类 + 模板 + 样式;通过 selector 挂载 |
| 模板 | HTML + 绑定 + 指令;见 组件与模板 |
| 依赖注入 | 在构造函数或 inject() 中获取服务实例 |
| 变更检测 | 默认由 Zone.js 等在异步任务后刷新视图;见 performance |
| Signal | 细粒度响应式原语(Angular 16+);见 Signals |
| RxJS | 处理异步流(HTTP、事件流);常与 async 管道配合 |
本目录学习路径
| 主题 | 文档 |
|---|---|
| 组件与模板 | components |
| 响应式 | signals/basics → rxjs |
| DI / 表单 / HTTP | di、forms、http |
| 路由与状态 | router、state |
| 性能与工程 | performance、project |
参考文献
以下链接在编写时均可正常访问:
| 资料 | 说明 |
|---|---|
| Angular 文档 | 英文官方 |
| Angular 中文文档 | 社区翻译,与版本同步以站点为准 |
| Angular 更新指南 | 版本升级 |
相关文章
生态集成
Angular 官方维护路由、HTTP、表单、动画等;UI 与状态扩展由社区与官方 Material 团队提供。涵盖官方/半官方库、常用第三方库、与 Vue/React 生态对照、选型建议与常见坑。
Signal 基础
Signals 是 Angular 16 引入的响应式原语:可读写的 signal、派生的 computed、副作用 effect。用于组件内状态与跨组件细粒度更新,涵盖 API、input signal、与变更检测的关系、最佳实践与常见坑。
RxJS 互操作
Angular 内置 RxJS 处理异步流(HTTP、HttpClient、路由事件、FormControl 的 valueChanges 等)。Signal 适合同步/短链路状态;长生命周期流仍常用 Observable。涵盖 async 管道、toSignal/toObservable、常用操作符、最佳实践与常见坑。
表单
Angular 提供 响应式表单(Reactive Forms) 与 模板驱动表单(Template-driven)。复杂表单推荐 Reactive Forms(模型在 TypeScript 中,易测试)。涵盖 FormGroup/FormArray、Typed Forms、自定义校验器、最佳实践与常见坑。
状态管理
Angular 没有强制单一状态库:服务 + DI、Signal、RxJS 即可覆盖多数场景;大型应用可选用 NgRx。涵盖选型、服务作为状态容器、跨组件共享、NgRx 与 SignalStore、常见坑。
HTTP 与数据
Angular 通过 HttpClient(@angular/common/http)发起 HTTP 请求,返回 RxJS Observable。见 RxJS 互操作、依赖注入。
Series
angular
1 / 14