写点什么

对前端趋势的一些理解

用户头像
葱小白
关注
发布于: 2021 年 04 月 11 日

前端近几年发展的如火如荼,框架和各种解决方案层出不穷,欣欣向荣。

框架的关注者,在前端中越来越多。框架所占的比重也越来越重。

这很像 JAVA 的现状,Spring 的关注度远远多于 Java 本身。

在我看来,前端其实在默默的趟一遍后端的路。

函数式编程,MVC,DI,面向对象,APO,微服务等以前在后端生根发芽的概念和设计思想,逐渐迁移到前端来。

前端走向哪里

我觉得跟前端未来会跟 JAVA 一样,走向统一解决方案。

什么是统一解决方案?

服务器面临的问题,高并发,海量数据,RPC,SOA 等,都已经有成熟的解决方案。比如 Spring 框架基本上是所有 java 服务器开发的选择。

在国内市场上,JAVA 的生态也远远好于其他后端开发语言。虽然我们看语言排行榜上,后端语言 JAVA 并不是第一,但是在国内市场。从招聘的情况看,JAVA 还是当之无愧的第一。

Go,Rust,.Net 虽然也有一席之地,在细分领域上也有很不错的表现,但是整体上还是难以撼动 Java。

为什么会这样?

我认为有几个原因。

第一是,先发优势。

Java 不是最快的语言,也不是写起来最舒服的语言,甚至某种程度上有点臃肿。但是 java 普及的时间及早。这导致一个问题,公司的技术负责人,可能都是 java 出身。复杂问题的解决方案,可能也是 Java 的。这也是.net 在国内远不如 java 的一个原因。.Net 为各种开发提供了一揽子的解决方案,网页,客户端,移动端,服务器都有。但是.net core 推出的时间很晚,服务器领域早被 Java 抢占了。

第二是,完善的生态。

欣欣向荣的开源社区,使得 Java 在各种场景下都有一个相对成熟的解决方案。并且这些方案逐渐的收敛,成为最佳实践。在这种情况下,使用 JAVA 生产效率是最高的,试错成本是最低的。

写代码写久了,其实很容易发现。决定一项技术生命力的,不是这项技术有多先进,而是这项技术有多节省时间和成本。我称之为工程成本。


以 Java 类比,我们梳理一下前端的发展历史。

前端发展普遍认为有两个关键节点,但是无论前端怎么发展,其本质没有改变,就是对 DOM 的处理。

先看这两个节点

第一是 Ajax 的出现。

Ajax 的出现,大大的释放了 JS 的能力。

前端从此不再是切图仔。

SPA 开始走入前端。

现在前端的三大框架都是在这个基础上生根发芽的。

第二是 Node 的出现。

node 剥离了 JS 的宿主环境,使得 JS 能够不再局限于浏览器。在我看来,node 对前端最大的影响,不是让 JS 染指后端,而是为前端带来了工程化基础支持和 npm 包。


其实我觉得还有第三点,就是前端标准逐渐的统一。

曾经的前端,浏览器百团大战,处理兼容性是前端最重要的工作。

如今,随着浏览器的市场份额逐渐收拢到 chromium 内核上。这种事情已经不再让前端开发头疼了。


前端的两次重大变革,给前端带来了今天的繁荣。前端开始承担更多的工作。

对于程序来讲,一切程序的本质都是算法与数据结构。

曾经的前端,几乎是不涉及这些的,因为确实用不上。

而如今,算法和数据结构已经在前端中开始扮演重要角色。这也是为何前端开发开始大呼‘太卷’了的原因。

但是这种卷,长期来看是有利于前端的大环境的。

从发展看,前端逐渐在告别百花齐放的年代。统一的框架和解决方案逐渐在形成了。

但是,与服务端相比。前端还是有很多不可控性,比如跨端,跨浏览器。

服务器的代码可以很稳定的运行在 linux 的服务器上,但是前端不会。如果跨端的问题,被行业大佬们解决,前端再来一次春天也未尝不能。


前端能做什么


当一切设施完善的时候,前端能做什么事情呢?这是很尴尬的问题。

前端最主要的战场还是浏览器或者 Electron。我们可以看到,移动端的崛起基本上带走了前端 ToC 的一切业务。新晋的互联网新贵,在 PC 端甚至只有一个官网介绍,挂一个二维码。

前端的业务战场,也基本上只剩下做 ToB 业务,以及博客之类需要长文本输入输出的一些 ToC 业务。

梳理一下,我们发现前端能做的事情是很少的。

相对于服务器端的复杂性,前端面临的问题要少的多。基本上业务逻辑和数据都是放在后端的。

前端说到底还是负责锦上添花,不是雪中送炭。

以目前市场来看,前端主要分在几个方向上。

  • 中后台管理

  • 可视化方向

  • 云文档方向

  • 工程化

至于以 node 来做服务器,我个人认为是一个自欺欺人的说法,是对后端难度的无知。

操作系统,分布式,RPC 都是很深的领域,都不是一个 node 负担的起的。写个 hello world 是很容易,但是做项目是另一回事了。node 也只有在 C++的加持下,能做的多一点,但还远远不足以独立承担服务器的重任。

除了小项目试点,或者做中间层,没有谁会选择用 node 来做服务器的,node 更适合的还是做一些 util 之类的事情,类似 python。


我认为两个方向上比较有意思,也比较有难度。难度带来的就是,壁垒高一点。

第一是可视化方向。通过 canvas,webgl 做 2d,3d 渲染,比如酷家乐这样的产品。随着工业软件上云,渲染、视频在未来应该还是很有市场。

第二是云文档方向。云文档是今年才兴起的一个方向,之前一直不温不火。但是随着疫情,飞书和钉钉文档开始发力,其他有关没关的厂商都开始跟上,据说连同程都在做了。

工程化取决于项目的复杂度,但是基本上现在被 webpack 包办的。能做的事情只剩下同构和微应用了。

说到底,前端的作用更依赖与一个好的产品。

中后台管理相对来说技术含量和难度都相对低一点,现在 git 上有很多 admin 之类的开源代码。基本上改一改就能用,拿去给中小企业做管理,是非常简单的。我之前看到有人一天改出来 3 套系统,令人咋舌。

在一个重量级的产品中,前端发挥的价值会大一点。否则,话语权就很低。如果你是一个前端人员,在面试时不妨了解了解自己要做一个什么样的产品。

前面说前端的战场主要收缩在 ToB 业务上,这其实也是好事情,因为 ToB 的业务相对复杂,前端的话语权就相对高一点。比如我们公司,前端的产品继承在一条线上,基础架构组就很有技术含量,也很有话语权。

前端当前的热点

这里谈三个东西。

TS

多数前端同学对 TS 的理解是类型检查,这确实是很重要的一方面。

但是 TS 的精髓实际上应该是接口和类。

TS 现在遍地开花,是因为它降低了工程成本。工程成本是一个非常重要的东西,我们在选择技术方案的时候,工程成本是一定会被考虑进去的。

可见的未来,TS 一定会更加普及,借着 TS 可能还会重新掀起一阵设计模式的浪潮。

低代码开发

这应该是近期的一个热点。

低代码这个东西,可谓由来以及,从有 GUI 之后,就有人在琢磨怎么做类似的工具。最成功的当然莫过于 QT,WPF。顺嘴说一下,MVVM 的设计模式最早就是 WPF 带来的。

我对前端低代码的理解是一个辅助工具,可以把它当作一个针对用户的产品,而非针对开发人员的工具。

因为不像 QT,WPF 他们是稳定的运行在 Linux 或者 Windows 系统中。前端是运行在浏览器中的,这有很高的不可控因素。要去固化它们,还是依赖于前端标准的统一化。

serverless

这也是今年很热的一个方向。

只是在我看来,serverless 对前端的影响不是很大。我将其理解为一种新形式的 BFF 中间层。

如果你们当前已经有用 node 在做 BFF 了,那可能有点影响。否则,影响就不是很大。

而相反的,serverless 的远程调试很成问题。大部分程序员的主要工作不是写代码,而是 Debugger。调试能力将大大影响开发效率和上线质量。在这个问题没有解决之前,serverless 只能做观望。

前端的奋进

作为程序狗,保持不断的学习是必然的,尤其是前端这种变化很快的领域。

了解前端的能力和局限性之后,我想前端的同学,补一补数据结构和算法,总是不会错的。

如果精力允许,可以学习一门静态语言。Go 和 Rust 因为历史包袱比较少,可以尝试一下。深度理解一下面向对象编程。

我是做 Linux 开发转做的前端,Linux 内核和 C 语言的基础,让我在转前端时收益匪浅。比如 React 的 fiber,一看之下就有点像线程调度的时间片概念。比如 VUE 对无法直接监听数组和对象的变化,是因为指针并没有改变。如果有可能,我觉得前端同学学习一下 JS 引擎的知识也是极好的。


最后,做个总结吧。

短期看的前端趋势的话:

  1. 框架的关注度会更高

  2. 数据结构和算法发挥的会更多

  3. 在新的交互场景出现之前,前端可能会陷入瓶颈期


发布于: 2021 年 04 月 11 日阅读数: 420
用户头像

葱小白

关注

还未添加个人签名 2018.06.28 加入

还未添加个人简介

评论 (2 条评论)

发布
用户头像
“前端最主要的战场还是浏览器或者 Electron。我们可以看到,移动端的崛起基本上带走了前端 ToC 的一切业务。新晋的互联网新贵,在 PC 端甚至只有一个官网介绍,挂一个二维码。” 这句话想表达的观点,没看懂。前端未来的发展,移动端领域也是一个很重要的场景的。
2021 年 04 月 13 日 07:58
回复
确实说的不清楚,这里的前端主要是指以浏览器为主战场的开发。移动端的前端分为浏览器和原生,移动浏览器份额很小,原生开发我将其分类为客户端开发。这两者区别还是有点大。
2021 年 04 月 14 日 11:31
回复
没有更多了
对前端趋势的一些理解