当您公开声明要成为Angular神时,这有点尴尬,而您所在地区唯一可用的工作需要React-很少或根本没有提及Angular。 因此,经过深思熟虑(主要是出于身体生存的原因),我决定跳出Angular跳板,深入研究React.js的蓝色大海。
事实证明,如果您已经使用了一段时间,那么所有代码都是相同的–只是编写方式不同。 当我尝试React时,JavaScript和构件逻辑的基本知识和核心知识并没有太大的飞跃-只是以不同的方式进行了重新排列,并提出了一些新的(但不是新的)想法。 我认为对Angular的深入了解也有所帮助。
这是我在两天内学习React中学到的东西。
全部都是JavaScript
React就像是精简版的,仅是必需品的库,可以无需进行复杂的设置即可放入现有项目。 Angular 1曾经是这样。 Angular 2+需要更多的腿部工作,拥有一个完整的Angular 2+项目比混合项目要容易得多。
React非常便携-这解释了为什么它如此流行的原因。 从理论上讲,我可以将React代码放在任何地方而不会引起很多问题或需要进行大量设置。 它在某些方面类似于原始JavaScript的事实使纯前端开发人员更容易理解。 但是,Angular 2+更适合说服后端开发人员进入前端。
没有隐式状态更改
到目前为止,据我了解,您提供给React的就是React渲染的东西。 与Angular不同,如果给它提供一个复选框,则该复选框将按预期工作(即,单击它并对其进行检查/取消选中)。 使用React,您必须显式跟踪状态更改,以使其对事件产生某种反应。
这是因为React在DOM上“绘制”了一个不变的状态,这意味着除非您告知,否则任何人都无法更改它。
道具
与Angular相似的概念,但访问它所需的代码更少-它已经存在并由React导入。 您所需要做的就是使用props.whateverYourPropertyNameIs在功能组件中访问它,或者this.props.whateverYourPropertyNameIs用于基于类的组件。
您将需要设计文档
无论如何,任何项目都需要设计文档。 但是对于React,您肯定比以往任何时候都需要它。 设计文档基本上是一个文档,概述了所需的功能,逻辑如何连接在一起以及构成代码所需的所有说明。 这样可以防止您的代码变成一碗意大利面。
该库看起来易于实现-可能会导致延迟编码。 惰性编码会造成技术负担。 计划您的逻辑。 它可以帮助您更快更好地进行编码。
一切都在一个空间中
CSS,HTML,函数,类,原始JavaScript和少量的React被合并为一个文档。 如果您尽力而为,但在任何地方都没有倡导或教导它,那么从技术上讲,您可以在Angular 2+中做到这一点。
React鼓励它。
如果您习惯于以MVC类型的结构来构建应用程序,而这一切都需要分开,或者需要特殊的功能和解析才能使其正常运行,这可能会有些奇怪。 使用React,您可以在编写代码时牢记最终的HTML输出-然后react将所有内容组合在一起。 使用Angular,您可以创建视图并整理组件中的逻辑。
变更速度较慢
版本号和更新并不像Angular那样可怕。 也许,仍然有很多开发人员对Angular 1和Angular 2之间巨大的学习曲线跳跃感到恐惧。
React似乎每隔一年更新一次主要发行版本,而更改的发布速度要比Angular慢。 这使得学习新事物成为可能,而不像Angular 2+那样令人恐惧。
Angular 2+每6个月发布一次主要版本-对于只想构建东西而不用担心向后兼容性的新手甚至经验丰富的开发人员来说,这可能是不堪重负的。
当React发生变化时,一次只是几件事。
好像太简单了
在过去的两个晚上,我发现React非常简单。 实际上,这太愚蠢了。 所以这使我提出疑问,有什么收获?
事实证明,有一个叫做Redux的东西在某个时候起作用。 由于某些原因,React和Redux可以同时使用,我将找出原因。
使用Angular 2+,您将知道这将是一条学习曲线,并且教程仅覆盖曲面的一角。 但是使用React,看起来就像您在初学者教程中看到的,基本上所有您需要的东西,再加上其他一些东西,例如受保护的路由和身份验证实现。 没有人真正暗示任何其他东西。 但是,Angular社区让您知道还有很多事情要做。
但是React的官方文档也比Angular的文档小得多。
我现在在等那个啊哈! 我发现React肮脏的小秘密的那一刻-如果有的话。 也许React和Redux的配对会启发我。
最后的话
因此,我已经学习了基础知识。 或者说,我在YouTube和Google入门版React文章中呆了两个晚上。 在那段时间里,我经常将它与Angular进行比较-仅仅是因为我可以通过将其与我已经知道的内容进行比较来学习图书馆。
尽管我发誓要成为Angular神,但我仍然坚信所有技术都是相同的-仍然存在循环,函数和其他逻辑构建块-只有语法和结构有所不同。 正是库要求您编写代码的方式以及与所需内容进行交互的方式使其与众不同。
显然,React和Angular在结构上有很大的不同,但归根结底,它仍然只是JavaScript。 通过鼓励使用原始JavaScript,React进一步完善了它。 他们确实将其带回了原始前端编码的OG时代,但更具个性和易用性。
到目前为止,我很喜欢它,但是它的简单性使我感到怀疑。
这使我得出最后的结论,即我只需要构建一些东西。 这些功能将需要包括CRUD,身份验证和路由保护-基本上占Internet的95%。 如果我能弄清楚这一点,那么我就可以轻松构建未来的应用程序了。
给我几天时间看看我能做些什么,然后可能会出现一系列完全失传的经验教训/技术文章。