Angular 的定位与 React、Vue 不同:它提供的是一整套完整方案而非视图库。依赖注入、模块化、路由、表单校验、HTTP 拦截、国际化都有官方实现,团队协作时约定天然统一,适合多人长期维护的大型企业系统。TypeScript 是强制的,RxJS 也是绕不过的必修课。
门槛高是它最大的劝退点:要同时学会装饰器、依赖注入、模块组织、响应式流这一整套概念,启动一个简单页面的心智成本远高于另外两家。但一旦项目复杂到相当规模,这套强制性约定反而成了降低混乱的护栏。
// 依赖注入思想的最小演示(不引框架,体会 Angular 的核心机制) var container = {}; function provide(name, fn) { container[name] = fn; } function inject(name) { return container[name](); } // 服务:被注入,不关心谁调用它 provide('logService', function () { return { log: function (m) { console.log('[LOG] ' + m); } }; }); provide('userService', function () { var log = inject('logService'); // 依赖也由容器注入 return { greet: function (n) { log.log('hello ' + n); } }; }); inject('userService').greet('Angular'); // Angular 的组件、服务、指令全部这样声明并注入,测试时轻松替换实现