前端已死
自 JS 诞生的20多年间,web开发大放异彩,它以入门门槛低,容易上手吸引了一大批从业者。在互联网爆发初期,很多行业开始把业务搬到网上,因此需要大量前端开发,前端工资也水涨船高,甚至达到高级前端开发者一将难求。
此时,在行业红利期,企业赚钱能力达到顶峰,有足够的利润去养活这些高薪的程序员。但是,现在不一样了,业务的赚钱能力急剧下降,因此裁员是无法避免的。
为什么会大量裁撤前端呢?或者说,如果你是老板,当裁员潮到来时,什么样的人优先被裁呢?你以为是那些技术不好,学历不好的人会优先被裁吗?
其实不是,只要你或者你所在的团队没有为公司创造利润就会被裁,不管你技术有多牛逼。最近,腾讯前端开发领袖、原腾讯QQ空间技术总监、T13专家黄希彤被裁,这就是一个非常有说服力的佐证。
那在整个开发流水线中,前端的价值体现在哪呢?
前端的工作主要是通过接口API拿到后端返回的数据,渲染到页面上,前端不会去主动关心数据是从何而来及数据是如何流转的。这就导致前端在整个开发中起一个打辅助的作用。
虽然,有些公司的前端业务很重,但占比极少,且集中在BAT这样的头部公司,摆脱不了前端工程师成为不了团队核心,业务专家的命运。对比后台开发的价值,前端开发的价值显得无足轻重,一旦行情不好,就逃脱不了被裁的命运。
但是,在一个团队中真的就不需要前端了吗?
当然不是,但又不可否认的是,随着低代码的出现,以及以chatgpt为代表AI技术的发展,前端的需求量明显下降,甚至有些后端都可以干前端的工作。
同时,大部分公司的前端都只是一个展示的功能,即使你奋斗几年让自己变成高级前端,在大多数情况下还是干着初中级前端的工作,仍然摆脱不了工具人的命运。
前端开发该如何突围呢?
前端的出路
现在很多公司招人都有非常苛刻的条件,比如,非985/211名校毕业的不要,超过35岁的不要,等等。实际上这怪不得这些公司,主要是竞争某个岗位的人实在太多了。
那作为前端开发者,该怎么办呢?
有的程序员干脆就直接转行了。但是转行哪有那么容易,首先你年龄已经不具备任何优势;其次,你不具备其他行业需要的知识技能;最后,传统行业的工资可能不及程序员的一半。
因此,对于程序员来说,转行是万不得已而为之的无奈之举。
既然转行不可取,那么前端开发者利用自己掌握的知识技能去开阔新的领域也是一个不错的选择。比如:用前端技术搞后端(Node.js),用前端技术搞桌面端(Electron),用前端技术搞人工智能(TensorFlow.js),等等。
那为什么不建议在某一个领域深耕,而是开阔其他领域呢?
比如说深耕vue,或者webpack等某一方面,守着一小块东西反反复复做,虽然在这个领域可以做到专家水平,但实际意义不大,有同类技术出现时很容易被替代。而且,大多数公司的业务都非常简单,只用了某些技术很少一部分功能。
因此,在今天的前端发展现状来看,深耕某一领域,只会把路会越走越窄,最终变成流水线上的工人。开阔新的领域,只要选对了溢出方向,路会越走越宽,而且竞争压力小,持续开疆拓土,输出价值。
桌面开发:将是前端开发的不错选择。
桌面开发
我们知道,web应用是需要跑在浏览器中的。当用户需要使用你的服务时,他需要点开浏览器,然后输入你的网址。你有没有发现,浏览器才是你应用的入口,而不是一开始就能进入你的应用中。
有很长一段时间,互联网大厂都在争夺用户的入口,都希望能在用户的电脑上部署一个长期运行的软件,这样就能在任何时候使自己的服务直接触达用户。
那能不能绕开浏览器呢?
能,绕开浏览器的办法只有一个,就是自己提供本地应用。
比如,移动端APP就已经达到了这个效果,用户打开手机,使用的基本上就是那么几个固定的App,不会再去从手机里找到浏览器后才能进入到你的应用。
其实,PC 端很多重要领域也已经被本地应用占领了,比如,游戏、邮件客户端、文字排版工具、绘图工具等,只是 PC 端的本地应用显然没有移动端的本地应用丰富多彩。
这并不是因为 PC 端没落了,相较而言,PC 端在便携性方面确实不如移动端,但不得不说 PC 端拥有它自己独特的优势,比如,更大的可视区域、更快捷多样的输入输出接口、更强劲的性能支持硬件等。
按照现在的发展趋势,PC 端正在向着更专业、更精细的方向发展。而移动端应用则更偏向社交和娱乐属性。
目前,像谷歌等一些大型互联网公司开始重新重视桌面应用的重要性,相继推出了各自的桌面应用框架,比如,GitHub 的 Electron,谷歌的 Flutter-Desktop等等,这些桌面端软件开发框架都是近几年才推出的,由此可见桌面应用开发领域将再次繁荣。
因此,掌握 PC 端开发的技能是非常有必要、非常有前景的。在众多桌面端开发框架中,作为前端工程师,我推荐Electron。
Electron 开发桌面应用
官网对Electron的介绍:
Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。
可以看到,Electron 内部封装了 Chromium 浏览器核心和 Nodejs,同时为开发者暴露出了很多必要的操作系统 API,有了它,前端开发者就可以使用 HTML, CSS, JavaScript 来开发桌面应用了。
使用Electron 开发桌面应用有如下几个优势:
- 容易上手,开发效率高
当前,前端技术是如今软件开发领域应用最广泛的技术之一,且入门门槛非常低、生态繁荣、社区活跃,相对于使用 C/C++ 开发桌面软件来说,使用 Electron 开发桌面应用更容易上手,且开发效率更高。
除此之外,Electron 可以使用几乎所有的 Web 前端生态领域及 Node.js 生态领域的组件和技术方案。目前发布到 npm 平台上的模块已经超过 100 万个,覆盖领域广、优秀模块繁多且使用非常简单方便。
- 调用 C++ 扩展,提升运行效率
你可能会担心前端技术执行效率会比 C/C++ 差,不可否认确实会有性能上的差距,但如果前端代码写得足够优秀,是完全可以做到与 C++ 应用相媲美的用户体验,最最经典的一个例子就是Visual Studio Code。
再加上,Nodejs 本身也可以很方便地调用 C++ 扩展,Electron 应用内又包含 Node.js 环境,对于一些运行速度要求高的需求也可以使用 Node.js 的 C++ 扩展来完成。
- 采用最新浏览器语法与标准
由于 Electron 内置了 Chromium 浏览器,该浏览器对各项前端标准都支持得非常好,甚至有些标准尚未通过,Chromium 浏览器就已经支持了,所以基于 Electron 开发应用不会遇到浏览器兼容性问题。你几乎可以在 Electron 中使用所有 HTML5、CSS3 、ES6 标准中定义的 API。
以上这些就是我推荐使用 Electron 开发桌面应用的原因。
当然,Electron 也有其他竞争对手,比如 NW.js,但 NW.js 与 Electron 相比,在稳定性、周边工具完善度、社区活跃程度上都相差非常大。
这两个框架都与中国人有极深的渊源,2011 年左右,中国英特尔开源技术中心的王文睿(Roger Wang)希望能用 Node.js 来操作 WebKit,而创建了 node-webkit 项目,这就是 NW.js 的前身。英特尔公司大力支持了这个项目,不但允许王文睿分出一部分精力来做这个开源项目,还给了他招聘名额,允许他招聘其他工程师来一起完成这个项目。
2012 年,故事的另一个主角赵成(Cheng Zhao)加入到王文睿的小组,并对 node-webkit 项目做出了大量的改进。后来赵成离开了英特尔,帮助 GitHub 团队尝试把 node-webkit 应用到 Atom 编辑器上,但由于当时 node-webkit 还并不稳定,且 node-webkit 项目的走向也不再受赵成的控制了,这个尝试最终以失败告终。
但赵成和 GitHub 团队并没有放弃,而是着手开发另一个类似 node-webkit 的项目:Atom Shell,这个项目就是 Electron 的前身,赵成在这个项目上倾注了大量的心血,这也是这个项目后来广受欢迎的关键因素之一,再后来 GitHub 把这个项目开源出来,最终更名为 Electron。