【IT168 资讯】Stack Overflow最近对最具戏剧性的技术增减情况进行了分析。不出意料,“最具戏剧性的增长”顶部里出现了Angular的身影。然而,这并不意味着Angular是十全十美的,它既有利也有弊。本文将深入解剖Angular的优点与缺点。
优点
1. TypeScript
TypeScript是JavaScript的一组超集,这意味着如果您知道如何使用JavaScript,特别是ECMAScript 6/7进行编码,那么转换应该是无懈可击的。当然,最重要的区别在于增加了类型,Angular可以对表格进行静态代码分析,进而提高代码的可读性和维护性。这并不是说bug会从项目中奇迹般地消失,仍然应该依靠已经建立的实践作为TDD和代码评审,但它确实比单纯的JavaScript对您更有利。
TypeScript还带来了ECMAScript新版本的所有优点,包括类语法、箭头函数、异步和等待等。此外,还添加了诸如接口、泛型和方法访问修饰符之类的已建立的OOP实践,使新成员能平滑的从Java和C#等语言向Web生态系统过渡。
尽管TypeScript在内联类型注释方面可能是冗长的,但是在类型推断方面上它正逐步改进。TypeScriptv可能永远不能取代JavaScript,而且在某些情况下,它可能会妨碍您的开发过程(小型项目或库),但在Agular的作用下,大多情况都是积极的。
2. 工具
Angular是一个框架而不是一个库,因此在“事情应该如何完成”方面和能使用的相关特性方面,它提供了一个“完整的解决方案”。与诸如React和Vue等库相比,大多主要的部分包括:路由、HTTP客户端、动画、表单处理和验证等。
不必在分析和挑选覆盖这些场景的库上浪费时间,您可以把关注点放在手头的问题上。构建工具是足够的。Angular-CLI似乎已经确立了自己作为Angular开始新项目的首选方式。它可以完成从开发到构建和部署的工作。
3. 可扩展性
由于其设计和工作方式,Angular很容易就能扩展。在您遇到任何可扩展性问题和错乱的代码之前,可能在围绕独立的、可测试的、可插拔模块、延迟加载、统一数据流和类似于Redux状态管理来设计您的应用程序上花费很多时间。在这种架构下,可以让更大的团队轻松地在代码库的不同部分上工作,不必担心出现打乱工作代码或者妨碍到彼此工作的情况。
4. 模板
与React(包含UI模板和内联JavaScript逻辑的混合)不同,大多数情况下,您可以将演示与逻辑分开。应该将Angular模板看作是带有特定Angular惯用语法(* ngIf或* ngFor)的HTML增强版本。
代码通常比JSX Frankenstein JavaScript API和标记混合的代码更清晰。
缺点
1. 复杂性和代码膨胀
Angular并不简单,它有很多可移动的部分,也有很多需要掌握的概念和约定。即使是在JavaScript和TypeScript方面经验都很丰富的人,也需要投入时间来研究框架下的内容。同样,概念和样板的数量也很重要。
这就引出了另一个问题,代码大小问题。Angular比React和Vue大了好几倍,在移动设备上主要造成了加载时间超长和性能问题。生成的代码是冗长的。即使在使用Angular的Ahead-of-Time编译器时,结果文件仍然很大。好消息是,开发团队发现并承认存在这个问题,同时也在积极的尝试改进。
2. 文档编制
虽然Angular的文档编制问题在过去的几个月里有所改善,但仍然有缺陷。暴露的API中相当一部分是没有任何有用描述的方法和属性的简短存根。