前端框架:解决方案还是庞大的问题?

发布于:2021-01-23 00:00:52

0

80

0

javascript 前端框架

前端框架已经经历了重大转变,并且在开发人员的生活中仍然保持着相关性。但是,新框架趋势是不是麻烦而不是便利?

现代的前端框架要求您下载开发环境,完整的依赖关系并编译代码,甚至尝试在浏览器上查看它。这是一件好事吗?是我们正在构建更复杂的站点,还是框架本身很复杂,从而引入了不必要的复杂性?

自90年代以来,当今的Web开发已经发生了很大的变化。我们能够创造出非常接近任何本机应用程序可以完成的全部体验,并且开发过程也发生了变化。成为前端Web开发人员的日子已经一去不复返了,只需打开记事本,键入几行代码,在浏览器中检查它,然后将其上传到FTP文件夹即可。

过去的前端Web开发

我必须先说一个显而易见的事实:世界不像十年前。(我知道,这令人震惊。)唯一保持不变的是变化。过去,我们的浏览器很少,但是存在很多兼容性问题。如今,您看不到“ Chrome 43.4.1上的最佳视图”之类的东西,但是在那时,这很普遍。现在,我们有更多的浏览器,但是兼容性问题更少。为什么?因为 jQuery。jQuery满足了需要一个标准的公共库的需要,该库允许您编写用于操作DOM的JavaScript代码,而不必担心它将在每个浏览器和每个版本的浏览器上运行的方式–这在2000年代真是一场噩梦。

现代浏览器可以将DOM作为标准进行操作,因此近年来对此类库的需求已大大减少。不再需要jQuery   ,但是我们仍然可以找到许多依赖它的非常有用的插件。换句话说,Web框架可能不是必需的,但是它们仍然足够有用,可以流行和广泛使用。从React,Angular,Vue和Ember到样式和格式设置模型(如Bootstrap),这是大多数流行Web框架共有的特征。

人们为什么使用框架

与生活中的Web开发一样,快速解决方案总是很方便的。您以前用JavaScript做过路由器吗?当您可以npm-install前端框架来克服此问题时,为什么要经历痛苦的学习过程?如果客户希望昨天完成工作, 或者您从另一个为特定框架设计的开发人员那里继承代码,或者如果您正在与已经使用给定框架的团队进行集成,那么时间就是一种奢侈 。面对现实吧,框架确实存在是有原因的。如果对他们没有好处,那么没人会使用它们。

那么使用Web开发框架有哪些好处和独特的属性呢?

时间就是金钱。 当您开发项目时,客户不在乎您使用哪个框架(实际上,甚至可能都不知道所使用的框架),他们只在乎获得结果,而且速度越快越好。建立的框架使您能够从一开始就获得即时的进步感,这是客户从第一天开始就渴望的。此外,开发速度越快,您赚到的钱就越多,因为框架释放的时间可以重定向到承担更多的工作项目。

这一切都与社区有关。 在选择框架时,这是非常重要的一点-当您遇到问题时谁能为您提供帮助?您和我都知道它会在某个时候发生。您将到达一个地方,需要做一些框架不希望做的事情,或者框架从来没有设计给您提供访问权限,因此拥有一个社区来支持您至关重要。沉浸在虚拟世界中,并且如果您是唯一的前端Web开发人员,则开发工作(尤其是自由职业者)可能会很难  在一个团队中,这意味着您是唯一拥有找到解决方案的经验和专业知识的人。但是,如果您使用的前端框架有可靠的支持,那么世界另一端将面临着同样的问题,并且可能会为您提供帮助。

标准是美丽的。 您是否曾经注意到,当您查看自己的旧代码片段时,可以很轻松地浏览它吗?或者至少比其他人编写的一段代码更容易?您以某种方式进行思考,并且拥有自己的命名方式和组织代码的方式。这是一个标准。即使他们只是为了我们自己,我们都会跟随他们。我们倾向于在早餐时吃类似的东西,在某个小时醒来,然后每天将钥匙放在同一位置。的确,如果我们每天都改变常规,光是从弄清楚如何做事的开销上,生活就会变得困难得多。是否曾经因为将钥匙放在与正常人不同的地方而丢失了钥匙?标准使生活更轻松。作为团队或开发人员社区的一部分时,它们绝对不可或缺。

框架从安装开始就提供了标准,指导您以特定方式进行思考和编码。您无需花费时间与团队一起建立标准。您只需遵循框架中的工作方式即可。这样可以更轻松地一起工作。当您知道某个功能必须在某个文件中时,查找该功能会更容易,因为它是为在SPA中添加路由而构建的,并且在您的框架中,所有路由都以该名称放置在文件中。如果您具有这种标准化水平,那么具有不同技能水平的人们可以一起工作,因为尽管高级编码人员知道 这样做的原因 ,但即使是初级开发人员也可以遵循标准。

当框架失败时

几年前,说出“我不使用框架-我看不到框架有什么真正的好处”之类的话,就会把拿着火把和干草叉的人带到你家。但是今天,越来越多的人问自己:“为什么我应该完全使用框架?我真的需要它们吗?难道 是 很难的代码,而他们呢?”

我当然是其中之一-我从不喜欢任何特定框架,并且在我整个职业生涯中一直在没有它们的情况下进行编码。如果我对此有选择,我的选择永远是“不,谢谢”。多年来,我一直在使用JavaScript和ActionScript进行开发。当大多数人已经认为它已经死了时,我正在用Flash进行编码。(我知道,我知道...但是我做了很多动画,并且纯HTML动画很难。)因此,如果您是从未考虑过不使用 框架进行编码的众多人中的一员,那么让我向您展示一些您可能会想到的 原因挣扎。

“一种尺寸适合所有人”是一个谎言。 您是否可以想象编写一款可以完成您职业生涯中所有工作的软件?这是Web开发框架的主要问题之一。您的项目有非常具体的需求,我们倾向于通过添加库,插件或附加组件来扩展框架范围来解决。没有框架可以100%提供您所需要的东西,也没有框架100%由您会发现有用的东西组成。

过多的代码不使用会导致网站的加载时间滞后,这对于每个其他用户而言都变得越来越重要。另一个问题是“一刀切”的思维定式导致代码效率低下。以为例, $(‘sku-product').html('SKU 909090');这是jQuery代码,最后,我们都知道它将被翻译成 document.getElementById('sku-product')[removed] = 'SKU 909090';。

在单行上的这种区别似乎并不重要,但是更改页面特定元素的内容正是React的优点。现在,React经历了创建DOM表示的过程,并分析了您尝试呈现的内容之间的差异。仅从一开始就定位要更改的内容会更容易吗?

您所走过的那杂草丛生的荆棘正在蔓延。 您是否曾经遇到过使用框架并尝试向其中添加库的情况,只是为了意识到所需的库版本与所使用的框架版本无法很好地兼容?有时,使两段代码协同工作要比自己编写代码花费更多的精力。而且由于您使用的框架和库通常是基于其他 框架和库构建的, 这些框架和库可能具有您甚至无法预料到的隐藏不兼容性,因此问题可能会成倍增长,甚至达到无法管理的程度。希望该项目保持增长。

跟上琼斯的步伐是一件事情。 是否曾经在AngularJS中从事过一个项目,只是发现您需要在Angular 4发布之前才出现的东西?您甚至不知道Angular 5已发布吗?这是另一个巨大的问题。即使您只使用一个前端框架,当发生新的主要版本时,事情也可能发生很大变化,以至于您努力编写的代码甚至都无法在新版本上运行。从烦人的许多文件更改需要完全重写代码,这可能会导致任何事情。

紧跟框架的最新版本是具有挑战性的,但是要注意的是,当更新完全停止并且其他技术无法跟上其他框架时,其他框架也会受到影响。2010年,AngularJS和Backbone首次发布。今天,Angular已经是其第五个主要版本,而Backbone则完全不在人们的关注范围内。七年似乎很长一段时间。如果您建立网站,它们的美观和功能可能已完全改变。如果您正在构建应用程序,则押注在错误的框架上可能会使公司在以后需要重写的情况下处于艰难而昂贵的境地。

当您只有一把锤子时,一切看起来都像钉子。 如果您经常使用Web开发框架,那么您可能会遇到这种情况,其中单个代码库定义了您将来使用的代码的形状,即使它只是外围相关的。假设您要建立一个类似YouTube的平台,并且想要使用FrameworkX。即使在当今这个时代听起来有些荒唐,您还是可能会决定使用Flash录制视频,因为这就是内置在框架中。

框架有意见,而且意见有力;例如,React会强制您以特定方式使用JSX。您可以在各处看到以这种方式使用的代码。还有其他选择吗?是。但是谁使用它?这并不总是一件坏事,但是如果您需要执行复杂的动画,则可能只需要一个动画框架而不是整个React。我见过人们在做疯狂的事情,例如在页面上添加jQuery只是为了将节点添加到元素上,而在香草JS中使用可以实现这一点 document.getElementById('id_of_node').appendChild(node);。