Angular
定义
Angular是一个以TypeScript为主要开发语言的前端框架,供开发者编写在浏览器中运行的单页应用[1]。它输出的核心成果是浏览器中的DOM结构与交互行为,[组件]与模板是其基本构成单位[2]。
框架自身提供了一套约定:每个组件都有一个HTML模板,模板里可以有内联模板或通过templateUrl指向独立文件,样式也可以覆盖到该组件的DOM范围之内[2]。框架把这些部分连同路由、表单、HTTP请求等第一方模块打包在一起,开发者无需再自行拼装基础能力[1]。
原理
组件的逻辑写在TypeScript类里,装饰器负责声明选择器、模板和样式等配置;模板内用双花括号把类中的动态数据插入HTML,元素属性用方括号绑定,事件用圆括号绑定,例如点击事件在括号中写明处理函数[2]。模板中的结构指令可以按条件渲染节点或按数据生成列表,早期版本使用ngIf、ngFor等指令完成此类工作[2]。
跨组件共享的逻辑被组织为服务,再通过依赖注入送入需要的组件,使代码保持模块化和可测试[1][2]。框架的渲染引擎把模板编译成一系列指令调用,运行时先创建DOM节点,再在更新阶段比对绑定值并写入变化的部分[3]。
更新触发机制经历了变化。早期依赖Zone.js拦截定时器、Promise、HTTP请求等异步操作,一旦异步任务结束就运行整个应用的变更检测;[信号(Signal)]机制引入后,状态读取位置被记录下来,变化时只标记相关的视图[4]。Angular 20起无Zone模式成为稳定特性,应用可以不再安装Zone.js,改由信号、事件绑定、异步管道或手动调用markForCheck等显式通知来安排检测[5][4]。
服务端渲染与静态站点生成也属于框架的一部分,配合完全的水合过程让首屏内容先在服务器生成再在浏览器接管;模板中的defer块可以把局部内容声明为可延迟加载[1]。这一能力在Angular 17中随水合默认启用而走向稳定[5]。
发展历程
框架的起源可追溯到2009年前后,由Google工程师Misko Hevery等人开发,最初的目标是给页面标记补充少量语法,从而写出可在邮件中传递的原型[6][7]。2010年10月,AngularJS正式对外发布;1.0.0版本于2012年6月推出,凭借较完整的应用骨架与可测试性获得采用[6]。
2014年,团队宣布重写框架,新版本起初称为Angular 2,改用TypeScript重写并转向以组件为中心的架构,2016年9月发布正式版[6][8]。自此1.x版本继续以AngularJS之名维护,2.0及以后的版本只称Angular[9]。AngularJS的长期支持在2022年1月发布的1.8.3版本后终止。
此后的版本大体保持每年一次大版本更新的节奏:Angular 17于2023年11月8日发布,Angular 18于2024年5月22日发布,Angular 20于2025年5月28日发布[10]。主要大版本通常提供6个月积极支持与12个月长期支持,合计约18个月[11]。
版本演进的方向集中在响应式与性能:Angular 17让signal与computed稳定,并引入if、for、switch控制流与defer可延迟视图的开发者预览;Angular 18使这些控制流和defer正式稳定;Angular 20让无Zone变更检测、input与output等信号式API、增量水合稳定下来,独立组件成为默认写法[5]。
应用
Angular主要用于构建规模较大、结构复杂的Web应用,例如需要处理大量数据与图表的可视化界面,以及模块划分较多的企业级系统[12]。借助Electron等桌面开发框架,基于Angular的项目也可以打包为桌面程序[12]。
在移动与跨平台方向上,Angular可与Ionic配合开发单页应用,也可经由React Native等方案生成原生应用,还能构建在Windows、macOS、Linux上安装的桌面程序。教学场景中,该框架常被作为TypeScript与前端工程化课程的案例内容,覆盖组件、指令、服务、依赖注入、管道、路由与部署等主题[13]。
局限
框架把大量约定和概念一并提供,学习者需要同时掌握模块、依赖注入、服务、模板语法等若干部分,入门时需要跨越的内容较多[12]。相较只解决视图层的库,其运行时体积与职责范围都更大,在需求简单的小型项目中容易显得配置偏重[12]。
无Zone模式虽已稳定,但迁移并非无成本。脱离Zone.js后,那些未被框架包裹的异步回调不会自动触发更新,订阅赋值、手动DOM事件监听等旧写法需要改用信号、异步管道或显式标记检查;第三方库、响应式表单、服务端渲染与测试环节也需要逐一验证[4]。
版本支持窗口有限。每个大版本合计约18个月的支持期,过期后只处理新发现的安全问题与回归修复,团队需要按节奏升级以继续获得维护[11]。旧版AngularJS早已停止长期支持,未迁移的项目无法再得到官方更新。
参见
-
AngularJS —— Angular的1.x版本,2016年后与新版Angular分道维护
-
TypeScript —— Angular采用的主要开发语言
-
依赖注入 —— Angular组织服务与组件关系的核心机制
-
信号(Signal) —— Angular用于细粒度状态追踪的响应式原语
-
服务端渲染 —— Angular提供的一种首屏生成与水合方式
参考资料
- What is Angular? • Angular [引用日期2026-10-29]
- What is Angular?link [引用日期2026-10-29]
- name: reference-core [引用日期2026-10-29]
- paradigmadigital.com 上的网页 [引用日期2026-10-29]
- What's new in Angular [引用日期2026-10-29]
- 2018,让Angula r和渐进式开发帮您工作 [引用日期2026-10-29]
- AngularJS [引用日期2026-10-29]
- AngularJS - 開発元 | Googleおよびコミュニティ [引用日期2026-10-29]
- AngularJS_百度百科 [引用日期2026-10-29]
- angular [引用日期2026-10-29]
- Angular [引用日期2026-10-29]
- 【前端】前端的三大主流框架 [引用日期2026-10-29]
- 课程 - Angular Web前端框架开发基础 [引用日期2026-10-29]