Angular真有React开发人员讲得那么差劲?

全文共2892字,预计学习时长8分钟前端

图源:technoloaderweb

 

说真的,Angular真的不似React开发人员说得那么差劲,只是咱们经常服从于脑海中已有的偏见。对于门外汉来讲,Angular看起来既庞大又复杂。但不少人没有意识到的是,它背后使用的编程语言都是JavaScript,主要区别在于建构方式的不一样。编程

 

Angular自己并无那么差劲。若是你真的那么想了,那多半是因为还没有了解前笼罩的刻板印象。对Angular的评价之因此褒贬不一,是由于不管是它的外观仍是工做方式都与你习惯的有所不一样。又或者是你自身存在的知识局限,让Angular没有按照你的要求运行。设计模式

 

我是一名Angular开发人员,但并不是由于它是个人首选本地框架就推荐它。若是你正在寻找一种以Angular为基座的React部件,它不合适。这是一个讨论部件,它超越了代码的细微差异,并且是“x比y更好”之类的东西。它是一个元视角,聚焦代码、功能以及在咱们使用Angular做为工具的能力范围中,Angular所处的位置。微信

 

全是JavaScript

 

与Web和前端相关的一切基础都是JavaScript。不管你是使用React,Angular,Vue,jQuery,Ajax仍是Node,它们都是JavaScript的一种形式。架构

 

图源:beansmile框架

 

这个行业面临的问题是,许多新手和过渡中的开发人员常常会使用JavaScript,但却从未好好学习过它。部分缘由是因为JavaScript很容易上手,无需复杂的设置,也无需结构实现或导出编译,你只需建立一些代码,大多数状况下它就能够正常工做。它是一种通过设计的脚本语言,在运行时就能进行编译和解释。编程语言

 

这经常给许多开发人员一种已经掌握了这种语言的错觉,致使他们在没有该语言背景知识的状况下直接进入库和框架。拥有计算机科学学位并不能将你从JavaScript中拯救出来,只有学习JavaScript才能让你打败它。模块化

 

事实上,JavaScript并无那么糟糕。它设计得很简单,这也是网景(NetScape)的部分吸引力所在(网景这个名字能让人联想到为何90年代会出现那么多随机的雪花和低劣的页面效果)。在苹果禁止Flash应用的推进下,JavaScript加速了占领Web的步伐。工具

 

可是随着项目规模的扩大和需求数量的增长,为了适应日益复杂的在线世界,咱们今天所熟知和喜好的框架和库成为了日益增长的代码管理问题的解决方案。Angular就是其中之一。在谷歌的支持下,它演变成咱们今天熟知的框架。

 

万物皆有本身的位置和目的

 

与React等库有很大不一样,Angular是一个框架。人们常常比较Angular和React,但因为两者存在的缘由以及构建的方式都不相同,对比时很难作到公平公正。

 

图源:unsplash

 

框架是库的集合,经过界面进行协调,从而更容易地利用库提供的特性和功能,这一过程是经过框架的沟通方法以及框架自身构建的方式来实现统一。

 

以Angular为例,它即是以体系化的结构组件为基础,这意味着Angular更偏好抽象为单个功能或逻辑组件的分解代码设计。这些组件界限分明,具备各自明确的方法、事件和属性。它利用了JavaScript的面向对象思想,并采用了TypeScript的类型定义形式。

 

React是一个前端接口库,用于管理屏幕上信息的“绘制”。除了JSX语法以外没有强制的体系结构或设计模式,决定权主要留给了开发人员。

 

所以,Angular一般被视为一种“刚性”框架。你几乎能够在任何地方随意地添加一段React代码,相比之下,Angular则须要一些设置。但随着刚性的加强,它具备必定的优点,特别是在应用程序的增加和团队要求一致,以结构化的方式不断前进时。Angular使项目具备可预测性,开发人员可以在项目之间实现无缝衔接。

 

微前端和反向架构

 

Angular一般被视为一个总体项目,不适用于过渡性应用程序。但这主要是因为常见的入门教程都是从头开始建立应用程序,与Angular的微前端存在差距。

什么是微前端?

 

应用程序是由无数个多重技术、框架和库组成的。这种状况时有发生,特别是在准备升级但没有足够人力或预算从头开始建立整个系统的遗留系统中。已经有了一个将全部部件都链接在一块儿的基础框架,这多是Angular框架,也多是其余类型的框架。

 

若是是其余类型的框架,Angular能够经过Angular Elements,以紧凑而包容的方式与之匹配。Angular Elements也被称为“Web组件”或自定义元素。经过这种方法,能够建立与框架无关的打包代码片断,这些代码片断能够用于传统Angular结构以外。

 

最终结果能够直接出如今页面中,并在须要时与应用程序的其余部分保持独立,你几乎能够把它想象成一个位于另外一个应用程序中的迷你Angular应用程序。它多是React,也多是Vue,甚至多是Java Spring的化身或基于PHP的应用程序。

 

有何重要性?

 

这意味着,若是Angular是你在过渡项目中要走的路线,那么就须要把各个部分拆开,再从新组合在一块儿。它的模块化设计使它能够与应用程序的其余部分保持独立,或者集成到彻底过渡的Angular应用程序中。这能够节省团队的时间,也不须要重构架构设计。

使用Angular的成本

 

图源:unsplash

 

使用Angular的主要成本是一条学习曲线,特别是若是你不是原生JavaScript的开发人员,或者对vanilla JavaScript不够了解。这就是Angular最终的指向——vanilla JavaScript,一种没有附加功能、没有架构和模式强制的JavaScript。

 

若是你理解了vanilla JavaScript的工做原理,它混合了一些创造性的结构化模式,那么理解Angular会更容易也更快。TypeScript只是看起来更容易使用并践行了面向对象的思想,而这些思想在JavaScript中还没法实现。

 

不管如何,你都没法避开vanilla JavaScript。在web前端开发领域中,不管你走到哪里,它都会一直存在。

 

所以,若是你认为Angular不好劲,那就应该先退一步,去看看vanilla JavaScript,只有这样你才能真正理解这个框架的实现,以及其实现可扩展性、代码控制与协调的意图。偏见经常源于不了解和先入为主的臆想,Angular真的没有那么差劲!

一块儿分享AI学习与发展的干货

欢迎关注全平台AI垂类自媒体 “读芯术”

(添加小编微信:dxsxbb,加入读者圈,一块儿讨论最新鲜的人工智能科技哦~)