当前位置:首页 > 科技  > 软件

维护太累了!2024年,我们还需要前端框架吗

来源: 责编: 时间:2024-01-10 09:35:42 309观看
导读作者丨Sean Haddock编译丨诺亚出品 | 51CTO技术栈(微信号:blog51cto)我最近遇到了一种观点,认为新的web开发不应该使用前端框架(Angular、React、Vue等),因为要跟上依赖项的新版本,维护负担很大。有人认为这种维护负担是不

作者丨Sean HaddockLDt28资讯网——每日最新资讯28at.com

编译丨诺亚LDt28资讯网——每日最新资讯28at.com

出品 | 51CTO技术栈(微信号:blog51cto)LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

我最近遇到了一种观点,认为新的web开发不应该使用前端框架(Angular、React、Vue等),因为要跟上依赖项的新版本,维护负担很大。有人认为这种维护负担是不合理的,因为大多数应用程序不再需要前端框架了。LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

这是真的吗?让我们在一家大型公司的典型开发团队的背景下研究这种说法,该公司负责许多应用程序——包括To B和To C的应用程序。我将使用Angular作为我的框架示例。LDt28资讯网——每日最新资讯28at.com

1、从来不需要框架

LDt28资讯网——每日最新资讯28at.com

争论的关键在于,由于JavaScript、CSS和浏览器特性的进步,不再需要框架。但我认为这在某种程度上夸大了事实。框架从来没有被要求做任何事情。前端框架提供JavaScript(在JavaScript中嵌入HTML)和CSS。因此,框架从来没有做过任何不能单独使用JavaScript/CSS完成的事情。他们只是让做这些事情变得更容易,结果是更快。LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

这与 .NET框架非常相似。当 .NET发布时,没有什么是 C/C++做不到的。.NET框架让Windows开发变得更容易,因此也更快。我还记得当 .NET出现时,C/C++开发人员提出了一些反对意见,他们认为你应该咬紧牙关学习 C/C++。我记得一开始我觉得自己不如那些开发者,因为我使用的框架声明的目的是让事情变得更简单,这感觉就像“作弊”。LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

但企业希望尽快看到结果。因此,一个使开发更容易和更快的框架将会流行起来,这就是 .NET所发生的事情。当 .NET如此简单,而且更能达成公司所追求的效果时,很难证明投入时间学习C/C++是合理的。LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

我认为这种情况与前端JavaScript框架类似(现在仍然如此)。当然,你可以用简单的JavaScript/CSS/HTML做所有的事情,但是当有更容易学习和实现的替代方案,并且允许你更快地交付时,很难不去追求这条道路——至少对于那些必须用有限的资源交付许多应用程序的公司来说,更是如此。LDt28资讯网——每日最新资讯28at.com

2、框架的功能

的确,JavaScript和浏览器特性已经有了很大的进步,其中很多都是由前端框架推动的。ES6对类和模块的支持为我们提供了一种用纯JavaScript构建代码的方法。创建封装功能和通过自定义事件通信的自定义元素的能力使我们能够创建可重用的组件。这些进步使得使用普通JavaScript进行开发比以前更容易。LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

但我并不确信,在快速构建复杂的web应用程序方面,普通JavaScript与前端框架不相上下。LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

例如,让我们看一下计数器组件的自定义元素示例。计数器组件是你可以实现的最简单的反应性组件之一,通常用于演示目的。左边是计数器组件作为自定义HTML元素的实现,仅使用普通JavaScript。右边是使用Angular17组件的相同实现。LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

自定义元素和Angular组件之间的比较自定义元素和Angular组件之间的比较LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

Angular组件的实现所用的行数不到自定义元素的一半。此外,Angular会生成组件的样板,这样我就只需要在红框中编写代码。此外,在Angular的解决方案中,我可以选择将模板移动到它自己的HTML文件中,这是我更喜欢的。如果我们在最简单的组件的实现中看到如此大的差异,那么对于一个复杂的组件,它会是什么样子呢?LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

另一件需要注意的事情是,Angular会在将值注入DOM之前对它们进行消毒,以防范跨站脚本(XSS)漏洞。这对于这个组件来说不是必需的,但是对于许多其他组件来说是必需的,并且这是团队必须以可重用的方式为自己实现的功能的一个示例。  LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

此外,JavaScript不是一种类型安全的语言——也就是说,直到运行时才会发现类型错误,而且你几乎得不到有用的智能感知。类型检查是否重要是一个单独的话题,但很多人相信它是重要的,这就是为什么Angular使用TypeScript来进行编译时类型检查并提供强大的智能感知。当然,你可以在不使用前端框架的情况下使用TypeScript,但你必须自己负责编译。LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

最后,像Angular这样的框架提供的不仅仅是一种更简单的方式来创建自定义组件。它们还提供服务和其他功能。举个例子,在Angular中很容易创建一个拦截器,你可以用它来修改所有的HTTP请求。这样的拦截器对于诸如为API调用添加身份验证头值之类的事情非常有用。在下一节中,让我们看看如何自己实现这样的东西。LDt28资讯网——每日最新资讯28at.com

3、依赖关系不会消失——它们只是转移了

让我们回到上一节刚刚提到的HTTP拦截器的示例。如果我只是使用普通的JavaScript,我将如何实现这一点呢?LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

首先,我可能会在发出请求的每个地方复制逻辑。我很快就会意识到我违反了DRY原则,并将此逻辑移动到共享模块中,然后在我想要使用它的任何地方导入该模块。但后来我意识到,我希望公司里的其他应用程序也能使用这个功能,所以我把它做成一个库,以便所有应用程序都能以一种有版本的方式使用它。LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

然后我会意识到不同的应用程序有不同的用例,所以我需要使代码可配置,以便它可以在不同的场景中工作。然后我会意识到,如果能够对同一个请求多次执行此操作就太好了,所以我会想出一种方法,对同一个请求应用多个更改,并按照开发人员确定的顺序执行。LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

每次对库进行更改时,我都必须了解使用库的不同方式,并注意不要破坏现有的实现。如果本地浏览器API在某些基本方面发生了变化,或者被其他东西所取代,我将希望利用库中的这些变化。事实上,如果有什么变化影响到浏览器的支持,我可能会被迫做出这些改变,并迅速做出改变——也就是说,如果浏览器更新将导致我的解决方案不再工作。LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

但我可能无法以 100% 向后兼容的方式做到这一点。因此,在这种情况下,我将不得不保留向后兼容的实现,同时还要实现一个新的解决方案,并找出一种方法来迁移我的库的使用者。所有这些都是在没有任何第三方依赖的情况下进行的。但是现在我的组织中的应用程序依赖于这个库,我必须自己维护它。显然,这只是共享功能的一个例子,当然还有很多其他的例子。LDt28资讯网——每日最新资讯28at.com

4、拥抱开放标准是件好事

LDt28资讯网——每日最新资讯28at.com

但我确实认为,如果我们能够做一些本地支持的事情,我们应该尝试本地做。我相信Angular也认同这一点,随着JavaScript、CSS和浏览器的发展,他们会经常放弃他们的自定义实现。LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

例如,一旦不再需要自定义解决方案,他们就弃用自定义伸缩盒解决方案,转而使用纯CSS。他们还引入了一种配置方法来使用本机API。Angular也不再使用自己的模块,因为ES6支持模块。LDt28资讯网——每日最新资讯28at.com

5、结论

LDt28资讯网——每日最新资讯28at.com

我们是使用别人提供的解决方案,还是推出自己的解决方案?这不是一个新问题。一般来说,我认为公司选择使用别人提供的解决方案来加速开发,因为他们没有资源(在技能或数量方面)来实现他们自己的解决方案。LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

然而,这确实带来了一种权衡,即你必须跟上你引入的依赖项。但我认为,对于许多实现企业应用程序的公司来说,天平仍然倾向于使用前端框架。LDt28资讯网——每日最新资讯28at.com

LDt28资讯网——每日最新资讯28at.com

参考链接:https://blog.stackademic.com/do-we-still-need-frontend-frameworks-in-2024-2975c27f7016LDt28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-59670-0.html维护太累了!2024年,我们还需要前端框架吗

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: PyPy迁移,团队无奈:“开源已成为GitHub的代名词”

下一篇: Shell判断是否包含给定字符串

标签:
  • 热门焦点
  • 影音体验是真的强 简单聊聊iQOO Pad

    大公司的好处就是产品线丰富,非常细分化的东西也能给你做出来,例如早先我们看到了新的vivo Pad2,之后我们又在iQOO Neo8 Pro的发布会上看到了iQOO的首款平板产品iQOO Pad。虽
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • 只需五步,使用start.spring.io快速入门Spring编程

    步骤1打开https://start.spring.io/,按照屏幕截图中的内容创建项目,添加 Spring Web 依赖项,并单击“生成”按钮下载 .zip 文件,为下一步做准备。请在进入步骤2之前进行解压。图
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人员可能会涉及各种各样的安全任务,包括但不限于:开发某些安全工具的插件,满足自己特定的安全需求;自定义github搜索工具,快速查找所需的安全资料、漏洞poc、exp
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的“征求意见版”:1、取消P序列
  • 华为发布HarmonyOS 4:更好玩、更流畅、更安全

    在8月4日的华为开发者大会2023(HDC.Together)大会上,HarmonyOS 4正式发布。自2019年发布以来,HarmonyOS一直以用户为中心,经历四年多的发展HarmonyOS已
  • 华为和江淮汽车合作开发百万元问界MPV?双方回应来了

    8月1日消息,郭明錤今天在社交平台发文称,华为正在和江淮汽车合作,开发售价在100万元的问界MPV,预计在2024年第2季度量产,销量目标为上市首年交付5万辆。
  • OPPO K11评测:旗舰级IMX890加持 2000元档最强影像手机

    【Techweb评测】中端机型用户群体巨大,占了中国目前手机市场的大头,一直以来都是各手机品牌的“必争之地”,其中OPPO K系列机型一直以来都以高品质、
Top