目前前端框架有许多,通常前端开发者在开发时,会从中选取一款框架进行开发。但作为全栈工程师的本文作者却认为我们应当抛弃React、Angular等主流框架,为什么他怎么说呢?咱们一起来看看。
作者
lampewebdev,全栈开发
译者
弯月,责编
伍杏玲
以下为译文:
时至年,我们都已达成了一项共识:组件可以构建快速、优雅且可维护的UI。问题在于,每个框架(例如ReactJs、AngularJS、Vue.js或其他一些较小的UI框架)在解决常见的问题时,都会使用自己的模式和解决方案。这些框架促进了可重用性,且易于使用。
另外,我听说这些框架背后都有Google或Facebook等大公司的支持。在本文中,我们来讨论一下,这种说法是否属实,社区是否可以做的更好,以及我们是否有更好的选择。
Web网站、Web应用程序,PWA或其他一切在浏览器中运行的代码最终都会化作HTML、CSS和JavaScript(也许还有WebAssembly)。那么,我们的目标是应该熟练地使用这些工具。我并没有说我们就使用这些工具,不要理会任何类型的库或框架。我们都应该使用,但如果我们的选择过多,那么会怎样?
事实上,如今的选择确实过多!多到让你觉得有点头晕。这些工具非但没有加快你的速度,甚至还成为了累赘,因为你不知道应该使用哪个前端UI库。
有时,你会想:“以后我就使用ReactJS”。这也不是不行。
ReactJS是一种非常好的解决方案,但我们还有Angular以及其他UI框架。这意味着我们无法像一个社区那样协同工作,而是需要将自己分散到这些小社区中。尤其是当你发现其中大多数工具都缺乏我们日常使用的功能时,就会觉得更加糟糕。ReactJS中的Router一点也不好玩。表单验证也很没劲,没人愿意做。因此,我们需要在这些UI框架的基础上,再建立别的代码库,而且在大多数情况下,我们需要建立2-3库来执行这些操作。我们不仅需要在UI框架上花费心思,而且还要付出努力重新编写基本的代码。我们浪费了多少时间。
可能有人看到这里会想,这似乎也算一件好事啊!
真的吗?请搜索:“Linux桌面系统元年”。Linux桌面系统也有同样的问题:Gnome、KDE、XFCE、Cinnamon、Mate、LXDE等等。这些都在试图解决一个问题:改进Linux桌面系统。
但他们成功了吗?
接下来我们来谈一谈可重用性。有人记得从Angular1到Angular2的跳转吗?这两个版本就像两个完全不同的框架。
现在我们有了Angular和AngularJS,它们一点都不令人困惑。
你可能在想:“但是,ReactJS没有重大变化呀。”虽说如此,ReactJS的两个版本之间没有如此巨大的变化!
但我问你,你敢在不使用钩子的地方发布React代码吗?相信评论中会有一半人说:“为什么不使用钩子?”在你需要将基于类的组件重写为基于函数的组件时,也会发生同样的情况。
现在我问你一个问题,你必须如实回答,而且也不要冠冕堂皇地说:“我是编程高手,我想使用最新潮的技术”,而是让我们本着“解决实际问题并为人们提供解决方案”的态度。
我的问题是:ReactJS的这些变化真的为你的客户带来了任何价值吗?对于你的用户呢?对于你的公司呢?代码的可阅读性提高了吗?如果如实回答,那么你可能会承认基于类的组件也很不错。仔细想一想,我们是不是被营销欺骗了?
你可能想说,这与市场营销有什么关系?请不要忘记,是谁创建了ReactJS?是Facebook!那么又是谁创建了AngularJS?是谷歌。
这两家公司最有名的是什么?如果你想说一家是社交网络,而另一家互联网搜索,那么你又错了!他们都是以广告和营销著称!如果你想了解一家公司真正的业绩,那就不应该看产品,而应该看他们的盈利点。
我经常听到有人说:“某某框架背后有一家大公司的支持,所以这个框架一定不错”,我觉得你应该冷静下来仔细思考。这句话的意思是说,由于你使用的框架背后有一家拥有大量资金的公司的支持,所以这个框架不会在某一天消失。然而,谷歌是著名的项目杀手。人们还特意建立了一个网站来纪念被谷歌干掉的项目(