Angular是一个大而全的框架,它提供了开发一个完整应用所需的所有要素。同时,作为背后的开发公司,Google有一个适用于Angular框架的Material Design UI库。我们结合Angular框架及UI库就能完成大部分的前端开发工作。
Angular 官方还提供了开发应用所需的脚手架,包含测试、运行服务、打包等部分。前端开发人员使用官方的命令行工具就可以快速生成Angular应用:ng new my-dream-app。在这个官方生成的项目里,可以直接运行和构建Angular 框架,而不需要像React或者Vue一样,寻找一个合适的脚手架。
下面的代码是通过Angular命令行工具Angular CLI生成的项目的依赖(package.json文件中):

’dependencies‘:{
"@angular/animations":"^6.0.3",
"@angular/common":"^6.0.3",
"@angular/compiler":"^6.0.3",
"@angular/core":"^6.0.3",
"@angular/forms":"^6.0.3",
"@angular/http":"^6.0.3",
"@angular/platform-browser":"^6.0.3",
"@angular/platform-browser-dynamic":"^6.0.3",
"@angular/router":"^6.0.3",
"core-js":"^2.5.4",
"rxjs":"^6.0.0",
"zone.js":"^0.8.26"
}

从这个依赖清单可以看出,项目的主要依赖都是与Angular框架相关的内容。此外,Angular项目默认能提供的一些额外的功能有:
1.animations,用于制作浏览器动画。
2.HTTP,用于处理HTTP相交的数据交互。
3.forms,用于处理表单相关的内容。
4.router,用于进行路由操作。
依赖中剩下的core-js是用来作浏览器兼容性(参见Angular项目的pollyfil.ts文件)的,rxjs则是响应式编程框架:Zone.js则是Angular团队开发的用于封装和拦截浏览器中的异步活动库。
同时,在这个Demo里,还集成有如下内容:
1.单元测试,集成运行环境Karma及单元测试框架Jasmine。
2.端到端(E2E)测试,集成端到端测试框架Protractor。
3.静态代码分析,通过工具codelyzer及tslint进行静态代码的分析。
而在其他框架里,与这些测试相关的内容,则需要开发人员手动来集成。在其官网https://angular.io/ 上,它不仅提供了我们需要的文档,还有一些配套的与Angular相关的资源。
当然,大而全也意味着在编码的过程中需要严格地按照官方的规范来执行,大而全的框架出现问题的时候,要修改是不容易。
在最近二三年的时间里,笔者一直使用Angular来作为项目的前端框架,原因主要是Angular的规范性。Angular不仅提供了一个前端框架所需要的开发要素,还提供了一系列开发规范和指南。这些规范有些被写在官方的文档上,有些一配置代码的形式存在于项目中,有些则存在于CLI(命令行工具)中。
这些严格的规范更适合于大公司的规模化运作,尤其在非互联网行业的传统公司里,比如金融、保险等。Angular大而全的体系方便进行项目管理,既能降低风险,又不会在制定开发规范上花费太多时间。尤其是那些后端出身的部门经理,更容易上手Angular的框架。
比如,华为公司在其DevCloud平台上选择了Angular框架,主要原因是可以确保开发人员严格地遵守规划。另外,华为公司还看重Typescript、组件化等带来的前端研发效率、质量及可维护的提升。
与React相比,虽然Angular没有官方的Web领域之外的平台方案,但是在社区拥有一些相应的框架。如用于跨平台原生应用开发的NativeScript,及用于混合应用的Ionic框架,它们都可以在某种程度上实现与Web平台共用逻辑。