前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端之变(终):前端的未来

前端之变(终):前端的未来

作者头像
御剑
发布2021-07-20 11:49:18
1.6K1
发布2021-07-20 11:49:18
举报
文章被收录于专栏:微言码道微言码道

若干年前,一位程序员做过一个预测:

Any application that can be written in JavaScript, will eventually be written in JavaScript. (任何可以用 JavaScript 来写的应用,最终都将用 JavaScript 来写)

某种程度上来说,它可能是一个事实,JavaScript已经参与到应用级技术方向的各个方面,在后端,移动端,桌面端都存在它的身影。甚至连mongo shell都是支持JS语言的。

但坦率的说,这些也并非一帆风顺的事情。

本周,将进入前端之变的最终章,谈论我对前端技术发展的一些个人的思考与分析。本周为前端之变的最终篇,前七篇分别是:

  1. 前端之变(一):技术的变与不变
  2. 前端之变(二): "不变"的前端
  3. 前端之变(三):变革与突破
  4. 前端之变(四):进击的前端
  5. 前端之变(五):王者归来
  6. 前端之变(六):引领式变革,从命令式UI到声明式UI
  7. 前端之变(七):前端的困境

在本篇中,我将试图就以下问题做出回答:

  • 前端技术是否能成为后端的主流?
  • 前端技术是否能成为移动端的主流?
  • 前端技术是否能成为桌面端的主流?
  • 前端技术未来独特的优势是什么?

声明

所有观点仅为个人观点,我希望观点能引发你的思考,而不是引发对立的情绪或无意义的争吵。

如果你看了我的观点,认为它不对,然后自己能思考自己认为正确的观点是如何,这就表示我这篇文章是非常有价值的。

前端技术在后端

NodeJS的火爆与好评,我在若干年前就有所感受,那时候我还只是个用Java做后端的架构师。

一个最简单的问题是:NodeJS是否能取代Java成为后端的主流或另一种可选项?

我的意见是:

前端技术几乎没有可能在后端成为主流

那个不讨人喜爱的Java,从未被撼动

Java这门语言很多人不喜欢,特别是很多优秀的程序员觉得它很一般,这是事实。

所以,其实不只是NodeJS,这些年来,在后端,试图挑战Java的多了去,类似动态JVM的语言Scala,Groovy试图取代Java,它们都提供了Java不具备的很多语言特性,比如Scala,函数式的风格极受好评,优秀的程序员特别喜欢这样的语言。还有类似Google的GO语言,对Java也造成了一定的挑战。

但很可惜,包括NodeJS在内的上述这些,皆没有成功取代Java成为主流。

其实这些语言各有特性与优点,可能Java与它们相比,确实很不出彩,但包括NodeJS在内的众多语言,始终有两个特性无法与Java语言相抗衡的。

  1. Java简单易学,这使得基于Java语言构建一个团队的成本较低,这是一个很重要的优势。现在几乎所有项目,都是团队活动,国内的互联网基本还处于依靠堆人的阶段,选择Java是最符合现状的。
  2. Java的生态过于强大。虽然包括NodeJS,Scala类似的语言有很多独特的做点,但在生态上完全无法与Java抗衡,现在不是二三十年前,随便一个项目或产品都涉及到一大堆特性,存储,分布式,缓存,定时任务,集群等,Java在这些方面几乎有着其它语言难以匹敌的生态。

再回过头来,说下NodeJS本身的缺陷:

  1. JavaScript不是一个面向对象的语言,做为NodeJS的语言,它在复杂业务前面几乎没有优势可言,也就是在应付复杂的业务及项目上,远不及Java。而后端就是复杂的所在地,后端就是用来处理复杂业务的。
  2. 它的异步事件循环机制确实是个极大的优势,但这也不是非常出彩的点,其实以Java为主的后端生态也有类似的解决方案,比如Spring WebFlux,还有我用的vert.x等,同样是异步机制,其性能还优于NodeJS。但这些本身也没成为主流,因为连它们都无法与Java的同步线程阻塞的生态抗衡。在考虑生态等各方面因素下,大多数团队还是会选择Java传统模式。

因此,我认为一个显而易见的结论就是:

JavaScript语言下的NodeJS在后端无法成为主流,但它会成为另一个小众的选择方案

前端技术在移动端

移动端的技术呈现五花八门的发展趋势,我曾经专门写过一篇解读文章,有兴趣的可以阅读下:

企业移动化信息建设的一些思考(二)移动开发技术发展

但总体说来,前端技术在移动端的趋势是:

以前端技术为核心的开发方式在移动端越来越成为主流方式

前端技术参与到移动端的方式主要有以下几种:

  1. 网页的方式
  2. App开发,以React Native为主
  3. HyBrid的模式,以Cordova为代表
  4. 小程序,依赖于微信,支付宝等的生态

事实上,上述几个方向的开发,越来越被前端技术占据。在它们的冲击下,原生移动开发将越来越少。

虽然,React Native有式微之势,它在对抗原生开发前并未取得优势,而且还面临类似Flutter的挑战。但如果我们把目光放到整个前端就会发现,App开发本身就存在式微的趋势,而以H5,小程序在慢慢成为业务在前端的主要实现方式。

这是因为:开发与推广一个原生App的成本越来越高,越来越难。

原生App总体呈现数量下降的趋势,并且可能未来会更明显。

从中国互联网络发展状况统计报告2020报告上可以知道,国内App数量在2018年达到顶峰,随后越发呈现下降的趋势,明显受到小程序等的生态的影响。

所以,移动端的开发人员,面临非常严峻的形势。虽然它不可能会消亡,但后面原生越来越会往平台或H5的承载体方向发展,这是一个已经存在的趋势。

前端技术在桌面端

以NW.js和Electron为代表的前端技术的出现,意味着前端技术现在也出现在的桌面端中了。

它会成为桌面开发的主流吗?

它不会成为桌面开发的主流,但它意味着一个极具性价比的可选方案出现,会越来越多的出现使用这种方案的桌面应用

PCX

我在2020年开发的PCX,几乎支持所有操作系统,甚至是国产ARM Linux系统等。

以NW.js和Electron前端技术为代表的桌面解决方案,是个非常具有性价比的方案,它具有一些独特的优势:

  • 它开发出来的东西是跨平台的,意味着开发一次,支持Window,Linux以及Mac系统
  • 它减少了开发桌面端对开发人员的要求,与寻找原生Win或Mac程序员相比,前端人员显然更好找。

当然,它在软件体积,对内存占用,还有以Web为主的UI毕竟不适合一些专业的场景,比如游戏等,再加上在操作系统上,Windows才是主流,Mac与Linux始终是少数,跨平台的考虑并不是刚需。意味着它不太可能成为主流。

类似的东西其实越来越多,只是大多数人没有感知而已,国内我就随便说几个:

  • 阿里云盘是基于Electron的解决方案
  • 飞书使用了Electron技术

阿里云盘几乎是完全使用的Electron

阿里云盘

飞书中也有Electron的存在

飞书

前端独特的优势

好吧,接下来说我对前端未来最有可能发展的一个趋势,就是前端技术具备其它技术所不具备的几个特性,这决定它在某些方面将具有独特的优势,是其它技术不可比拟的。

前端是直面用户的第一媒介

与后端不同,前端的东西基本是直面用户的,比如网页,小程序或桌面应用等,用户使用这些东西时,基本就是使用前端技术编码出来的东西。

而后端则更多的是支撑,不管后端的技术或框架多么优秀或性能多么好,用户并不直接使用它们,也基本感知不到,它是背后起到支撑的作用。

前端程序员最接近全栈程序员

想像下吧,我们抛开团队来说,哪一端的程序员最有可能独立做出一个完整的产品?

当然是前端程序员了,他们可以使用NodeJS编写后端服务,再编写H5网页,或使用小程序,React Native编写一个移动端的产物。

想下这种场景,是不是只有前端程序员最具这种可能性?

这会产生一个什么样的后果 ?

拥有这两个优势的前端,就会形成其它技术形容不了的两个重要趋势:

前端技术的产物更具有直接使用价值,而非支撑的东西

事实上,这不是趋势,已经成为一个事实了。

很多程序员,包括后端程序员,使用的一些有名的产品,都是前端技术的杰作。但可能大家都没意识到:

比如:

  • 最有名的博客系统hexo,是前端技术
  • GitBook,允许你快速的编写一本电子书
  • docusaurus,Facebook出的一个让程序员快速生成自己产品网站的开源产品。我的 https://myddd.org 就是基于它而构建的。使用它,基本你不用关心网站如何设计与构建。
  • Gatsby是一个基于React ,用于搭建静态站点的开源框架。我的 https://taoofcode.cc 就是基于它而构建的。

可以预料的是,在前端技术的支撑下,类似的杰出的东西只会越来越多,也就是前端会产生越来越多具有直接使用的价值品,而不是和后端一样,更多的是一些支撑框架。

前端技术将是个人英雄辈出的最可能方向

如我上面所述,如果不依赖团队,当一个程序员有了一个idea,想独立去实现这个想法,构建一个产品。那谁最有可能独立做到这个事情?

当然是前端程序员了,他们有能力使用自己的技术几乎去构建每一个方向的产品,无论是后端服务,还是网页,或移动端App,他们几乎都能依靠自己的技术实现,而不是去组建一个团队。

想像下,当后端程序员为如何构建网页与移动App而发愁时,移动端程序员为如何构建一个后端服务与网页而无从下手时,只有前端程序员是不用为这些事发愁的,对吧。

因此,他们将大有可为。

我与前端

2015年,我从一个后端架构师,因为一些机缘巧合的原因去从事Android与iOS开发后。2020年,我在技术上再次发生转变,在几乎对前端还停留在JQuery那个理解的前提下,独立主导与开发了PCX这样一个基于Electron跨平台桌面应用,它再一次冲击了我的技术之路,使得我彻底转变为一个全栈程序员。

同样,前端技术的转变也令我惊奇,于是我开始构思与准备写下我对前端技术变化的一些思考与分析。这便是前端之变这个系列的来源。

我明白了一个道理:

新的技术是永恒不断更新变化的。但本质上,它并没有太多改变,只是形式变化了。

这些年,从Java,再历经Object-C,TypeScript,再到Kotlin,Swift这些语言,它使我仿佛进入了一个新的世界。

我希望对所有程序员做出这样一个建议:

永远不要只使用一种编码语言,永远不要把自己局限在某个语言或方向上,不要定位自己是只能从事某一个方向开发的人。你可以专注与精通某一个方向,但你永远要去尝试做那些你觉得你不会的方向

这会让你对技术的理解有彻底的转变,开始理解与明白技术真正是什么。

这也是我在2021年开始做微言码道的原因所在,如同它的口号一样:用我们微小的力量传播编码之道。

那究竟什么才是编码之道,我又是如何理解它的呢?

下一个系列:编码之道将开始连载,我仍然会以每周一篇的频率,阐述微言码道的核心宗旨的要义。

敬请期待。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微言码道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 声明
  • 前端技术在后端
  • 前端技术在移动端
  • 前端技术在桌面端
  • 前端独特的优势
    • 前端技术的产物更具有直接使用价值,而非支撑的东西
      • 前端技术将是个人英雄辈出的最可能方向
      • 我与前端
      相关产品与服务
      云开发 CloudBase
      云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档