【CSDN 编者按】目前前端框架有许多,通常前端开发者在开发时,会从中选取一款框架进行开发。但作为全栈工程师的本文作者却认为我们应当抛弃React、Angular等主流框架,为什么他怎么说呢?咱们一起来看看。

作者 | lampewebdev,全栈开发
译者 | 弯月,责编 | 伍杏玲
出品 | CSDN(ID:CSDNnews)
以下为译文:
时至2019年,我们都已达成了一项共识:组件可以构建快速、优雅且可维护的UI。问题在于,每个框架(例如ReactJs、AngularJS、Vue.js或其他一些较小的UI框架)在解决常见的问题时,都会使用自己的模式和解决方案。这些框架促进了可重用性,且易于使用。
另外,我听说这些框架背后都有Google或Facebook等大公司的支持。在本文中,我们来讨论一下,这种说法是否属实,社区是否可以做的更好,以及我们是否有更好的选择。
Web网站、Web应用程序,PWA或其他一切在浏览器中运行的代码最终都会化作HTML、CSS和JavaScript(也许还有Web Assembly)。那么,我们的目标是应该熟练地使用这些工具。我并没有说我们就使用这些工具,不要理会任何类型的库或框架。我们都应该使用,但如果我们的选择过多,那么会怎样?
事实上,如今的选择确实过多!多到让你觉得有点头晕。这些工具非但没有加快你的速度,甚至还成为了累赘,因为你不知道应该使用哪个前端UI库。
有时,你会想:“以后我就使用ReactJS”。这也不是不行。
ReactJS是一种非常好的解决方案,但我们还有Angular以及其他UI框架。这意味着我们无法像一个社区那样协同工作,而是需要将自己分散到这些小社区中。尤其是当你发现其中大多数工具都缺乏我们日常使用的功能时,就会觉得更加糟糕。ReactJS中的Router一点也不好玩。表单验证也很没劲,没人愿意做。因此,我们需要在这些UI框架的基础上,再建立别的代码库,而且在大多数情况下,我们需要建立2-3库来执行这些操作。我们不仅需要在UI框架上花费心思,而且还要付出努力重新编写基本的代码。我们浪费了多少时间。
可能有人看到这里会想,这似乎也算一件好事啊!
真的吗?请搜索:“Linux 桌面系统元年”。Linux 桌面系统也有同样的问题:Gnome、KDE、XFCE、Cinnamon、Mate、LXDE等等。这些都在试图解决一个问题:改进Linux 桌面系统。
但他们成功了吗? 
接下来我们来谈一谈可重用性。有人记得从Angular 1到Angular 2的跳转吗?这两个版本就像两个完全不同的框架
现在我们有了Angular和AngularJS,它们一点都不令人困惑。
你可能在想:“但是,ReactJS没有重大变化呀。”虽说如此,ReactJS的两个版本之间没有如此巨大的变化!
但我问你,你敢在不使用钩子的地方发布React代码吗?相信评论中会有一半人说:“为什么不使用钩子?”在你需要将基于类的组件重写为基于函数的组件时,也会发生同样的情况。
现在我问你一个问题,你必须如实回答,而且也不要冠冕堂皇地说:“我是编程高手,我想使用最新潮的技术”,而是让我们本着“解决实际问题并为人们提供解决方案”的态度。
我的问题是:ReactJS的这些变化真的为你的客户带来了任何价值吗?对于你的用户呢?对于你的公司呢?代码的可阅读性提高了吗?如果如实回答,那么你可能会承认基于类的组件也很不错。仔细想一想,我们是不是被营销欺骗了?
你可能想说,这与市场营销有什么关系?请不要忘记,是谁创建了ReactJS?是Facebook!那么又是谁创建了AngularJS?是谷歌。
这两家公司最有名的是什么?如果你想说一家是社交网络,而另一家互联网搜索,那么你又错了!他们都是以广告和营销著称!如果你想了解一家公司真正的业绩,那就不应该看产品,而应该看他们的盈利点。
我经常听到有人说:“某某框架背后有一家大公司的支持,所以这个框架一定不错”,我觉得你应该冷静下来仔细思考。这句话的意思是说,由于你使用的框架背后有一家拥有大量资金的公司的支持,所以这个框架不会在某一天消失。然而,谷歌是著名的项目杀手。人们还特意建立了一个网站来纪念被谷歌干掉的项目(https://killedbygoogle.com/)。所以,现在你还想使用Angular吗?那么Facebbok呢?Facebook的很多项目都是用了ReactJS。他们还在招聘工程师,如果新来的人了解你们正在使用的框架库,不是很好吗?我觉得这种事情,你应该自己做决定。
我希望你能看到Web开发社区目前遇到的一些问题。
我们该如何解决?我个人认为,我们有现成的解决这些问题的正确方法。那就是制定正确的标准!W3C是一个优秀的组织,应该有更多来自社区的人参与其中。但这是另一个话题了。
为什么标准可以帮助我们解决所有问题?
当一项技术成为一项标准时,所有主流浏览器都会实现并使用这项标准。对开发人员来说,这意味着不需要额外的库,也不需要考虑其他浏览器中的边缘情况。即便有Bug或问题,也有相关责任者为所有用户修复Bug。
因此,只需由一个人出面修改一次,而不需要成千上万的开发人员独自修改。这有助于解决社区分裂的问题。如果编写的某个组件可以同时在Vue.js、Angular和ReactJS中使用,那该多美好?这样更多的开发人员可以改进同一个Calendar组件,并创建优秀的组件,而不是创造出20个半成品的日历组件。如果这一切都不需要大公司的支持,只需社区和浏览器厂商支持就够了的话该多好?
其实所有这些情况都曾经出现过,只不过我们现在忘记了!
没错,我们确实忘记了!这项技术叫做“Web组件v1”。
早在2014年,我们这个社区针对应该使用Web组件还是ReactJS的问题,发生过激烈的争论。最后,众所周知,我们选择了ReactJS。这在当时可能是正确的选择,因为Web组件还太年轻,而且规范还没有准备好。因此我们称之为Web组件v0,但自2018年以来我们现在有了v1。现在,所有大公司都接受了这个规范,并开始实施——极个别情况除外。此外,对于旧版本的浏览器还可以使用Polyfill。
至于,Web组件v1的用法,以及以及如何将它们集成到当前项目中,这个话题我们日后再谈。
原文:https://dev.to/lampewebdev/it-is-time-to-ditch-reactjs-or-angular-and-use-better-web-standards-like-web-components-part-1-3mba

【END】

小白Python的学习规划,我只做了5件事!

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

 热 文 推 荐 

点击阅读原文,即刻阅读《程序员大本营》最新期刊。

你点的每个“在看”,我都认真当成了喜欢

为何这名全栈工程师说“抛弃 React、Angular”?相关推荐

  1. 智能音箱大战全面开火,那么问题来了:如何成为一名全栈语音识别工程师?

    文 / 陈孝良 11月16号,百度发布了渡鸦智能音箱和DuerOS开发板SoundPi,至此,国内再一名巨头加入智能音箱大战.迄今为止,国内战场上的巨头有阿里.京东.腾讯.百度.小米.科大讯飞等,国外 ...

  2. 你是否应该成为一名全栈工程师?

    Asaf Yigal是Logz.io的联合创始人与产品副总裁.在Logz.io之前,Asaf与他人联合创立了Currensee,这是一个社会化交易平台,后来在2013年被OANDA收购.在 Curre ...

  3. 如何成为一名全栈开发人员----转载

    全栈工程师是可以将最初的原型转换成为 MVP(最低可行产品),他们通常被称之为行业的万精油,无所不会的大师,而且有很好的声誉.为了定义现代的全栈工程师,我们首先需要关注的是完整的堆栈开发人员曾经是什么 ...

  4. 如何成为一名全栈开发人员

    全栈工程师是可以将最初的原型转换成为 MVP(最低可行产品),他们通常被称之为行业的万精油,无所不会的大师,而且有很好的声誉.为了定义现代的全栈工程师,我们首先需要关注的是完整的堆栈开发人员曾经是什么 ...

  5. 如何成为一名全栈工程师:专业建议与技能要求

    作为一名全栈工程师,你需要拥有跨越前端.后端.数据库等多个领域的技能,并能够将它们整合起来构建出完整的应用程序.因此,成为一名全栈工程师需要你掌握多种技术,具备较强的编程能力和系统设计能力.下面,我将 ...

  6. 【干货】一名全栈设计师的 Mac 工具箱(设计,开发,效率)

    转载自Cocoa China, 原文地址:http://www.cocoachina.com/ios/20170512/19259.html 原文 我喜欢把自己定义为一个会一些设计的全栈工程师.在一些 ...

  7. 【Mac工具箱】独孤九剑!一名全栈设计师的Mac工具箱(设计/开发/效率)

    编者按:一个同时拥有开发/设计/高执行力技能的设计师会用哪些软件来帮自己提高工作效率?今天这篇软件推荐的文章作者是一个架构师,业余喜欢用自学的设计技能开发网站和App,一起来看看他的工具箱. 我喜欢把 ...

  8. 如何成为一名全栈语音识别工程师?

    本文转载自声智科技CEO陈孝良老师科学网博客: http://blog.sciencenet.cn/blog-1375795-1085914.html 11月16号,百度发布了渡鸦智能音箱和DuerO ...

  9. 如何在三个月内成为一名全栈开发

    我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 ​如果你想在3个月内成为一名全栈开发人员,那么你必须学习下面列出的语言/技能 ...

最新文章

  1. python if elif else 区别
  2. 汽车常识全面介绍 - 车身
  3. 关于DMA,TCM(ITCM和DTCM)和Cache的理解
  4. 写在Silverlight 5发布前 - 盘点2010年Silverlight开发书籍
  5. XAMPP的安装与使用
  6. 【SRM-05 B】无题?
  7. 我喜欢构建器模式的三个原因
  8. java $p_javap -c命令详解
  9. PWA - service worker - Workbox(未完)
  10. 《你必须知道的.NET》,评价和推荐
  11. Docker学习总结(51)——为什么不建议把数据库部署在 Docker 容器内的7大原因?
  12. 智慧楼宇管理后台、运维配置、设备台账、设备管理、维保统计、巡检统计、维修工单、报修统计、电子巡更、智能楼宇运营、运营后台、智慧社区、楼宇设备监控管理端、智能社区管理系统、楼宇运维管理系统
  13. 从零基础入门Tensorflow2.0 ----五、22TF1.0计算图构建
  14. fs2410开发板搭建网站服务器,FS2410开发板使用步骤
  15. Linux禁用文件可执行权限
  16. 佳能 6D Mark II与 90D 对比评测
  17. PHP爬虫框架phpspider(二) - 分页爬取写入数据库
  18. 简述力法计算弹性固定无铰拱的原理_隧道结构力学计算5页
  19. 让机器辨别气味:利用图神经网络预测分子的嗅觉属性
  20. 我的星座-处女座的特点分析

热门文章

  1. java vc vb 项目结构
  2. 如何在矩池云上运行FinRL-Libray股票交易策略框架
  3. bat替换文件中的字符串_JavaScript 中替换字符串的几种方法
  4. mac python 图_Python之图片OCR识别(Mac)
  5. 计算机应用基础课程是过程化考试吗,基于能力的计算机应用基础课程过程化考核标准构建与实施.doc...
  6. java图表标题_Java 创建Excel图表
  7. 中国加热织物市场趋势报告、技术动态创新及市场预测
  8. 第5章 见缝插针(《C和C++游戏趣味编程》配套教学视频)
  9. 3风扇声音怎么调小_美的风扇价格表
  10. linux编程进程,Linux编程—进程