取得高薪offer的Web前端框架:是解药还是毒药?

前几天,大学期间的朋友刘畅,跟甄棒说了一件纠结的事:

据说Web前端是高薪行业,可是他该怎么入门?

810021866575f515a81195c83ef91833.jpeg

要使用现代的前端框架,你需要下载开发环境和依赖,编译代码,然后在浏览器上运行。

这个是好是坏?究竟是什么导致了这种不必要的复杂性?是因为我们构建的网站太复杂,还是因为框架本身就很复杂?

从 90 年代以来,Web 开发已经发生了巨大的变化,我们可以做到出非常接近原生应用的体验,而开发流程也变得与以前不一样。

对于 Web 前端开发人员来说,那种只需打开记事本,输入几行代码,在浏览器中运行,然后上传到 FTP 文件夹的日子已经一去不复返。

01.

过去的Web前端开发

我必须先说明这个显而易见的事实:世界已经不像 10 年前那样。唯一不变的是变化。那个时候,我们只有少数的几种浏览器,但是存在很多兼容性问题。

我们现在有更多的浏览器,但更少的兼容性问题。为什么?因为 jQuery。

jQuery 提供了一个标准的通用库来操作 DOM,无需操心它在每个浏览器以及同一浏览器不同版本上是如何运行的——兼容性问题在 2000 年代是开发者的噩梦。

现在的大部分浏览器都提供了标准的方式来操作 DOM,因此近年来对这种通用库的需求大大减少了。

我们不再需要 jQuery,但仍然可以找到一些非常有用的插件依赖了 jQuery。

换句话说,Web 框架可能不是必需的,但仍然很有用。这是大多数 Web 框架的共性,从 React、Angular、Vue 和 Ember,到样式模型(如 Bootstrap)。

02.

为什么人们要使用框架

使用 Web 开发框架有哪些好处,它们有什么独特的地方?

时间就是金钱。客户可能不会关心你使用的是哪个框架,他们只关心结果,而且越快越好。

现成的框架让你从一开始就有一种进度感,而这恰恰是客户所希望的。此外,你开发得越快,赚的钱就越多,因为使用框架节省下来的时间可以用来做更多的项目。

f7d20b54679c5e23153e463c79e5e6c3.jpeg

社区的支持。在选择框架时,这是非常重要的一点——当你遇到问题时可以找谁帮忙?

到了某个时候,你需要做一些框架本来不打算做的事情,或者框架不让你使用某些功能,这个时候就要求助社区。

这个时候开发陷入了困境(特别是对于自由开发者来说),因为你现在处在一个虚拟的世界中,如果你是团队中唯一的前端开发人员,也就意味着你是唯一能够找到解决方案的人。

8702b98d018ffd60b12d9e2fe093e2c4.jpeg

但是,如果你使用的前端框架有强大的社区在支持,那么在世界另一端可能会出现另一个解决过相同问题的人,他们可以帮助到你。

你有没有注意到,当你在阅读自己写的代码时,是不是觉得很容易就看懂?或者至少比看其他人的代码更容易?

因为你有自己的思考方式,有自己的命名和组织代码的方式。从你安装框架的那一刻起,它们就引导你按照某种特定的方式思考和编码。

你不需要花时间和团队一起制定标准,只需要遵循框架提供的标准就可以了,这让团队合作变得更加容易。

如果你要查找某个函数,很容易就能找到它,因为你知道它一定存在于某个文件中。

03.

当框架失效时

几年前,如果有人说,“我不使用框架,我看不到框架能够给我带来真正的好处”,那么肯定会有一伙人带着火把和叉子来到你家门口。

但是今天,越来越多的人在问自己:“为什么我要使用框架?我真的需要它们吗?难道不使用框架就真的很难写好代码?“

如果你是众多从来没有想过不使用框架编程的人当中的一员,那么我不得不告诉你一些残酷的事实。

a1e4b91e88417b7f318684411e38aa99.jpeg

“一刀切”的解决方案是一个谎言。你能够想象开发一个可以解决所有问题的软件是怎样的一种体验吗?这是 Web 开发框架的主要问题之一。

如果项目有特殊的需求,我们倾向于通过添加库或插件来扩展框架。

没有任何一个框架能够 100% 满足你的需求,没有任何一个框架提供的所有东西对你来说都是有用的。

加载太多用不到的代码会导致更多的延迟。另一个问题是,“一刀切”的思维方式导致代码效率低下。

举个例子,jQuery 中的 $(‘sku-product’).html(’SKU 909090’); 最终需要被翻译为chengdocument.getElementById(‘sku-production’).innerHTML='SKU 909090’;。

当然,像这样一两行的代码差异似乎不算什么,但在 React 中,为了渲染变化的页面元素,

它需要创建整个 DOM 表示,并分析发生变化的部分。而如果从一开始就瞄准想要改变的内容是不是更容易?

199627f09b3feb4dbf82e08417a8ace9.jpeg

你走过的杂草丛里藏着荆棘。你是否曾经遇到过这样的情况,当你尝试在框架中加入一个库时,发现这个版本的库与这个版本的框架不能放在一起使用?

有时候为了让它们能够放在一起使用,需要花费很多的精力,还不如自己写代码把问题解决了。

而且,由于你所使用的框架和库通常建立在其他框架和库之上,而这些框架和库可能存在不可预料的兼容性问题。

所以问题可能会呈指数级增长,变得更加复杂,从而达到无法收拾的地步。

与时俱进也是一个问题。即使你只使用一个前端框架,当一个新的主要版本发布时,也可能会发生很大的变化,以至于你之前费劲写好的代码无法在新版本上运行。

a36f4d60b3ff37b3535ef3c1d7e089f5.jpeg


它们可能只是一些烦人的小变化,但你却不得不在大量文件上重写代码。

跟上框架的更新步伐是件相当有挑战性的事情,但同样的,框架完全停止更新或无法跟上技术发展的趋势,也会带来很大的麻烦。

AngularJS 和 Backbone 初始版本都是在 2010 年发布的,今天,Angular 已经成为推出了第 5 个大版本,但却没有人关注 Backbone。

如果你把赌注压在错误的框架身上,可能会让公司陷入一个艰难的境地,最终不得不重新来过。

aa2f37f7f7d34c3387400815d42d3ef3.jpeg

当你手里握着一把锤子,一切看起来都像钉子。如果你经常使用 Web 框架,可能就会遇到这种情况。

比方说,你想要使用 Framework X 来构建一个类似 YouTube 这样的平台。你决定在这个平台上使用 Flash 播放器,尽管这在现在听起来很荒谬,但这是框架提供的,你就随它去了。

框架本身提供了非常强烈的约束,例如,React 强制你以特定的方式使用 JSX。那么我们有其他选择吗?

有是有,但是很少有人用,虽然说这并不总是一件坏事,但如果你需要运行复杂的动画,可能只需要一个动画框架,而不是整个 React。

原文链接: 取得高薪offer的Web前端框架:是解药还是毒药?
作者:前端之巅
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cj瑾瑜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值