使用Angular的8个理由 - Sweetcode


在选择前端Web开发框架时,现代程序员有几个不错的选择。Angular是一个开源框架,由Google创建并于2010年正式向公众发布,是其中之一。其他受欢迎的竞争者包括React和Vue。
想知道选择哪一个?本文通过强调使用Angular开发前端Web应用程序的八个原因提供了一些见解。我不是在争论Angular是所有情况下最好的框架,但我想强调它的一些优点,并解释它与React和Vue等框架的比较。

原因#1:Angular简化了MVC
模型 - 视图 - 控制器(MVC)体系结构将应用程序分解为三个不同的组件,是开发面向用户的应用程序的常用策略。大多数Web开发框架都要求开发人员通过分别为每个组件设计和编写代码来实现MVC架构,然后编写更多代码将组件连接在一起。
Angular通过自动将不同的组件放在一起来简化和简化此过程,从而节省您的时间。因此,尽管Angular当然不是唯一支持MVC架构的框架(它也可以通过Vue和React完成,但是在这种情况下将组件放在一起需要更多的努力),它使得构建它比其他框架更容易和更快MVC架构。

理由#2:大Angular生态系统
在技​​术生态系统方面,Angular更大更好。拥有庞大的个人和公司社区的技术更容易使用,因为支持很多,兼容性很普遍,并且技术被放弃的风险很低。
Angular拥有所有这些优势。它由Google的专门团队支持和构建,Google本身使用Angular。该公司还提供了Angular长期支持(LTS)。这意味着该技术巨头计划坚持使用Angular,并在未来进行扩展。
Angular生态系统的优势并不仅限于谷歌。Angular还拥有一个非常庞大的用户社区,他们愿意互相支持。这个社区提供了另一个支持和活力的来源。
就市场份额而言,Angular 似乎在JavaScript框架中位居第二,仅次于React,但在Vue面前。对于它的价值,Angular采用率似乎比React的增长速度更快(尽管Vue增长最快),因此Angular可能超越React成为不久的将来最受欢迎的框架。

原因#3:Angular Universal和服务器端呈现
服务器端呈现是一种允许Web服务器生成通常由客户端构建的内容(换句话说,最终用户的浏览器)的技术。由于多种原因,服务器端呈现很有用。它使网页抓取工具可以轻松访问网页。它还提高了性能,尤其是在移动和低功耗设备上,由于资源不足,这些设备很难在客户端快速呈现内容。并且通过促进更快的页面加载时间来帮助用户满意。
常规Angular应用程序在浏览器中执行,并在DOM中呈现页面以响应用户的操作。但是,Angular社区提供了一个用于更改此行为的简单工具:Angular Universal,它允许通过服务器端呈现在服务器上生成静态应用程序页面。通过将Angular Universal与应用程序集成,可以生成服务器端页面并响应来自浏览器的请求。
使用Vue,React和大多数其他JavaScript框架进行服务器端渲染也是可能的,但它涉及更多步骤。使用Angular Universal,您只需打包您的应用程序以在服务器端运行并使用Universal进行部署。

原因#4:Angular材料设计
从Angular 5.0开始,Angular功能在其框架中集成了对Material Design的支持。Material Design是一个开源工具集,可帮助开发人员快速构建有吸引力的界面。它简化了在Web,移动和桌面上工作的现代UI组件的创建。
Material Design主题和模板已预先配置为与Angular一起使用,使其易于集成到Angular项目中。此外,Material Design组件可以与Angular上的服务器端呈现结合使用,从而可以轻松地将它们合并到基于Angular的应用程序中,该应用程序利用上述服务器端性能改进。
大多数其他框架也适用于Material Design,但并非所有框架都为其提供官方的集成支持。

原因#5:Angular下的层次依赖注入
Angular提供了分层依赖注入,这对于为应用程序组装数据服务特别有用。在分层依赖注入中,有一个与app的组件树平行的注入器树。通过依赖注入,类会从外部源请求依赖性,而不是自己创建依赖项。这可以提高性能。它还允许Web开发人员在外部导入依赖项而不是在应用程序中配置它们,从而简化了Web开发人员的工作。Angular在实例化时为类提供声明的依赖项。Angular依赖注入框架允许用户从可注入服务类提供数据,该服务类在其自己的文件中单独定义。服务所需的任何依赖项都可以“注入”其构造函数,并在运行时“注入”对象。这允许在需要时覆盖注入的对象,并在整个应用程序中提供一致性。

理由#6:Angular的模块化设计
在Angular中,一切都被组织成模块,从服务到指令的所有内容都必须组织成一个或多个模块。模块通过将代码划分为功能和可重用的块来增加代码的可重用性。它们还极大地简化了组织中的分工,以及代码的一致性和维护。
可以肯定的是,Angular在其模块化设计中绝不是独一无二的。模块化在许多现代编程语言和框架中很常见。
不过,我认为Angular特别模块化,因为不仅可以使用模块化架构来配置和部署基本代码组件(如函数),还可以使用Angular构建的任何对象。这种模块化在当今的微服务和分布式架构时代尤其有利,它们更容易与具有模块化设计的应用程序集成,因此可以作为跨大型基础架构的不同服务部分进行部署。

在大多数方面,Vue提供与Angular相同的模块化功能。React并不如此,因为React没有将模块化设计作为主要目标.。

(banq注:React是函数式风格,这与面向对象的模块化视角不同,管道化本身也是一种可组装的动态模块,这里有作者的偏见!)

原因#7:Angular单元测试
Angular已准备好进行单元测试。单元测试是开发人员可以在软件交付管道中执行的第一类测试之一,以确保其代码满足预期的期望。单元测试允许开发人员在将新功能添加到应用程序的主代码库之前对其进行彻底测试。这样,可以快速检测到错误并与主代码库隔离,这使得它们更容易解决。
理论上,用任何编程语言编写的代码都可以进行单元测试。但是,单元测试兼容性是Angular的明确设计目标,这意味着开发人员不必修改他们的代码或使用特殊的测试工具来使用Angular进行单元测试。

理由#8:Angular使用TypeScript基础
Angular应用程序是使用TypeScript构建的,TypeScript是JavaScript的超集。这意味着您可以将ES5或ES2015 + JavaScript代码插入.ts文件,它将完美运行。这也意味着只要在构建期间创建了正确的映射文件,就可以在浏览器或编辑器中直接调试TypeScript代码。
这不仅有助于简化您的工作流程并帮助您避免将文件从一种格式转换为另一种格式,而且因为使用TypeScript可以提高您及早发现错误的几率。请记住,如果您对TypeScript不满意,可以选择退出Angular中特定于TypeScript的功能。
Vue对TypeScript的支持有限(尽管Vue开发人员表示将在即将发布的Vue 3.0版本中进行更改)。对于React,它可以与TypeScript一起使用,但只有在将它添加到项目中时才能使用; TypeScript没有内置到React中。  


结论
不可否认,并非上述所有功能都是Angular独有的。您可以在其他Web框架中找到其中一些。但是当你将所有这些功能放在一起时,Angular因其多功能性,模块化和层次依赖注入而脱颖而出。如果这些特征对您的项目很重要,那么Angular可能最适合您的编程需求。