哪些技术将决定前端开发者未来的发展?2019年下半年即将到来。上半年风暴般的裁员浪潮让每一位从业者都感到不寒而栗。经过五六年的黄??金发展,前端开发行业似乎进入了拐点。一边听开发者抱怨网上找工作难,前端开发早就饱和了,一边听大厂朋友抱怨招人很久了,但他们不能到处填满HC。前端人才市场就是这样充满矛盾和异常。其实仔细想想,上面的情况就很容易理解了。事实上,前端开发的人数已经饱和,所以大量的初级前端工程师找不到工作,但另一方面,高级前端工程师仍然凤毛麟角。高级职位的HC永远不会饱和。不久前,打工大叔发了一条动态:目前前端人员分布呈金字塔型,而且是金字塔型,底部比较长:这么高级是大多数前端开发必须面对的,而且现在写不了几页了,该找工作了。唯有晋级,才能保持专业竞争力。否则,下一波裁员潮来临时,我们会不会变成沙滩上的裸泳者,谁也说不准。我对前端技术的思考方式。前端社区是一个非常活跃的社区。几乎每一次新技术或者新的开发方式成为热点的时候,前端开发者都会有一种“学不会”的感觉。模因,以及令人尴尬的Deno消息事件。以我自己为例,因为要自己开发一个APP,所以面临技术选择,未来也要投入大量的时间去选择学习的技术。摆在我面前的是三种选择:Flutter跨平台技术RN跨平台技术(WEEX除了阿里生态,很少用到)原生技术选择哪种技术既能满足开发APP的需求,又值得投入时间学习?如果你去知乎或者其他技术社区问,答案大多是Flutter(虽然从回答来看,很多受访者好像没用过Flutter),Flutter作为一项才正式发布半年的新技术,风靡网络。整个前端大圈,成为当之无愧的关注焦点。很佩服谷歌的布道能力。想了很久的Flutter,也用它快速开发了一个demo,很吸引人:DeclarativeUI这个跟React很像,比Android的UI编程方式(the作者很早以前写过AndroidAPP,编码经验就不说了)更彻底的跨平台,直接调用Skia图形引擎进行组件渲染,比RN更底层,其概念更像是一场游戏。潜力更大,据悉,Flutter是谷歌新操作系统的首个指定框架,这意味着你可能会赶上这个新系统的风口。这项技术实在是太吸引人了,社区里无论是否了解Flutter的人都有义务推广它。我什至决定学习Flutter。但是,你有没有想过,通过学习Flutter,你的技术会得到提升呢?很多人的第一反应是“当然,学了新技术、新语言,技术不就提高了吗?”》。但我不这么认为。其实我还是原地踏步。一个Java开发者,学会了使用Ruby进行增删改查,并不代表他的能力就提高了。一个前线-端开发者用RN或者Flutter开发一个简单的APP,并不代表他的水平提高了,只是用另一种语言重写了UI而已,用三个框架写页面也不是什么高科技的事情,还是去吧深于一不如知三。Flutter和RN一样,要想玩好必须深入原生开发,因为这两个技术并不是真正的跨平台,只是UI跨平台而已。是没有能力提升,再功利一点想,就算你学会了用Flutter写UI,那又如何?你公司有Flutter项目吗?就算轮到让你大展拳脚?毕竟你没有原生平台的知识储备,光写个UI有什么用?其实,这个例子说了这么久,我只是说两件事:我们有时候看似在学习很多技术,但实际上这些技术并不能提高你,反而让你产生了“我学到了新东西,能力提高了”自我认知偏差不要盲目跟风社区热点,你可能捡了芝麻丢了西瓜,你应该仔细想想这项技术是否能提升你,而不是被传教士“洗脑”。我抱着这样的思路仔细研究了最近很火的几项技术,我可以很确定它们在未来的前端开发领域一定会大放异彩。TypeScript我是从2017年开始使用TypeScript的,可以说那个时候在使用的过程中踩了很多坑,也总结了很多经验。知乎上的问题是“你为什么不用TypeScript?”』得票最高的答案是作者本人。2019年年中,我可以非常确定TypeScript将在一年内大规模流行。如何定义大规模流行?超过30%基于前端框架的新项目将以TypeScript为主要语言进行开发。原因我总结了三点。逐渐称霸开源社区大量重量级的前端开源项目都是使用TypeScript开发的,包括但不限于:Angular、VScode、Vue3.0、Rxjs、TypeScript(没错,就是bootstraps)、Mobx、deno、Antd,而且这个趋势越来越明显,包括Facebook自己的Jest也宣布从flowType转向TypeScript。这些重量级的开源项目具有非常强的带动作用。不止一次看到一些前端开发者说为了看懂Antd的源码,特地学习了TypeScript。可以说TypeScript的开源生态已经非常完善,企业可以放心大胆的进行TypeScript开发。TypeScript是一项真正解决生产力问题的技术。前端开发中导致错误最多的三类错误是什么?你不会想到是:UncaughtTypeError:CannotReadPropertyTypeError:'undefined'IsNotanObject(evaluating...)TypeError:NullIsNotanObject(evaluating...)其实三个非常非常low级错误,原因是JavaScript是一种动态语言,只有在运行时才会报告错误。这些低级错误不会出现在具有完整类型定义的TypeScript中。这是TypeScript的优点之一,编码时可以避免大量的类型错误。TypeScript完全定义了接口,可以减少很多沟通成本和文档编写成本。最好的文件是类型。另外,用TypeScript支持前后端协同也会很方便。有了TypeScript,我们就可以完全开发出一个工具,将后端JavaSwagger的信息映射到TypeScript,方便我们检索数据,最大程度的避免出错。现在有pont这样的前端访问库。总而言之,TypeScript解决了前端两大问题,避免错误和提高效率。阿里MidwayJs团队负责人在GMTC上表示,“TypeScript可以帮助我们解决这些质量问题、习惯问题、方法问题。以midway团队为例,自从使用TypeScript以来,质量有了明显的提升。平时,我们需要长时间测试代码,几乎没有低级问题,但暴露的问题大多是逻辑问题。”并提到“而且今年,我们希望所有新应用都使用TS。”Vue3.0将是TypeScript大规模普及的导火索,Vue3.0将在下半年发布,虽然游雨熙确认Vue3.0同时支持JavaScript和TypeScript,但是vue2的残障级别支持.x受限,既然原生支持了TypeScript,势必会导致一大批以Vue为技术栈的公司进行TypeScript运动,届时三大框架都能完美支持TypeScript,甚至他们两个人都是直接用TypeScript开发的,而Vue在中国拥有最多的用户,也最能影响TypeScript在中国的走向。据我了解,美团、饿了么等一大批Vue技术栈的前端团队也大量实践了TypeScript。至少在大厂层面,TypeScript已经开始大规模普及。图形技术图形技术不会在短时间内席卷前端,也永远不会成为流行的前端技术,但却是高级前端开发者必学的技术。为什么说图形技术在前端不会流行?火的早就火了,webGPU也将在年内发布。大多数前端连webgl1.x都不清楚。归根结底还是技术栈不匹配。虽然前端开发和移动端开发有很大一部分是为了实现UI,但是这种实现几乎都是调用宿主内置的组件,很少有使用图形界面来绘制UI的。为什么说它先进呢?图形技术可能是唯一与前端密切相关的计算机底层技术,因为所谓的UI是通过图形接口调用GPU来绘制的,这意味着掌握图形技术可以更深入地定制UI。未来的前端UI不仅仅由简单的输入、表格、列表等粗粒度的组件组成,而是更加多样化和细粒度。就拿我最近研究的可视化大屏项目来说,它几乎没有使用任何传统的前端组件,有的2D组件调用Canvas绘图接口,有的3D组件是通过webgl来绘制的。今年下半年,5G在国内开始大规模部署。一个普遍的观点是,5G的到来将重振AR、VR等虚拟技术。想想在AR中绘制一个输入组件。我从去年开始关注图形技术,惊喜地发现和一些前端专家的观点不谋而合。一个是传奇舞团团长月影在知乎的回答:另一个也是年初冬天的前端技术预测:编辑领域技术编辑这里指的是各种的总称编辑器,例如:代码编辑器(WebIDE)、图形编辑器(在线3d建模或ps)、文本编辑器等。编辑器领域技术不会像TypeScript一样普及到几乎所有的前端团队,但一定是一种会在当地流行起来。为什么说它只会局部着火呢?这是一个非常小众的领域,但它的复杂性和重要性与日俱增。首先,大多数公司在大多数业务场景下对编辑器的需求不大。其次,编辑器非常多才多艺。网站具体业务场景的实现千差万别,但是涉及到用户输入的文本编辑器,则可以使用相同的开源软件。说完了部分,再来说说它为什么火起来。最重要的一点是云开发的普及。大量的开发者服务被移植到云端,包括最近流行的FaaS、小程序服务等。一方面,云厂商为了给开发者提供更好的服务,比如开发FaaS调试服务,需要定制适合自己业务的webIDE。另一方面,它更重要。一个开发者的开发环境是不会轻易改变的,webIDE就是这个环境,webIDE是云厂商和开发者争夺战的入口。另一个原因是大型团队需要将各个团队的能力整合在一起,而整合开发的关键是IDE。虽然很多公司都招聘前端职称的编辑相关工程师,但是普通的前端工程师如果没有相关经验,是无法应对这种场景的。这导致了人才短缺,尽管这是一个小众领域。案件。下图是中心在GMTC展示的阿里前端委员会布局的四个方向:谈谈其他热门技术ServerlessServerless肯定会火,而且还会直接提高生产力。前端可以忽略部署、运维、环境等场景,直接写函数实现后端逻辑,也许以后大家都是所谓的全职工程师。但是为什么没有重点呢?首先,serverless的应用场景比较轻。这不是灵丹妙药。当前的Serverless热潮在一定程度上夸大了它的实际作用。还有一点,对于前端来说,Serverless其实是一个你只能用的工具。其自身开发需要云原生专业开发人员,前端根本无法深度参与。反而降低了前端对node的要求(因为只要会写代码,不需要后端知识),但是对企业和团队来说是好事,不是一门技术非常有利于个人的成长。随着IOT5G的到来,万物互联的概念也随之而来。5G时代IOT会不会流行我不确定,但我觉得前端要在IOT上大显身手,这几年是看不到进步的。有人会说有人把js移植到嵌入式领域了?是的,连三星都为IOT设备定制了js虚拟机。物联网是一种低性能、低功耗和低内存设备。在这种场景下越强大,运行时间低、性能高的底层编程语言就越强大。不幸的是,js恰恰相反。这种语言天生就不适合IOT,C语言如鱼得水。ps:听一个专门做IOT的技术达人说,js最大的问题就是耗电。很多便携IOT设备不能用js商用(充电五分钟,待机五秒),那为什么会有这么多?很多人都在炒IOT中js的话题?有兴趣的可以收听Ruff作者郑烨的电台专访。原因是js开发者多。..有技术难点的底层技术将交由专业的嵌入式开发人员处理。JS开发者只需要写业务,那么又回到Flutter的问题上了。与浏览器写业务相比,IOT写业务有什么技术提升?羊毛布?当然,从职场的角度来看,物联网还是有未来的。一旦IOT流行起来,先入这个领域的人可以更容易地摘桃子,但我个人不建议现在入坑。风险远远大于收益。如果你真的对任何js感兴趣的话,不如去研究jsruntime,比如node和deno,这些都是真正有助于提升能力的技术。GraphQLGraphQL已经火了好几年了,但是还是没有什么动静。不是技术本身有问题,而是这种技术严重损害了后端开发的利益。GraphQL对于前端开发者来说真的很容易上手。从此不用请后台大哥另起炉灶,完全可以自给自足。然而,这项让前端开发如此酷炫的技术,付出的代价是大量改造工作需要由后端来做,后端团队一直在GraphQL上下功夫,但前端-最终受益最大。如果出现问题,后端将受到影响。这项技术的阻力可想而知。这个技术考验的是跨团队沟通协作的能力,而不是技术本身。当然,前者在很多情况下比后者更重要,但这与本文的主题不符。AIINFE这几年最火的技术就是AI。虽然可以说这个领域和前端没有交集,但是还是有很多人想依托它。先说tfjs的问题。基于浏览器的深度学习框架其实应用范围非常非常窄。笔者在调研过程中并未发现任何具有商业价值的案例。在浏览器中运行深度学习已经很小了。js本身的性能问题,以及浏览器不支持GPU加速的API,让tfjs更像是一个残次品。事实上,一些前端团队虽然在开发AI应用,但基本都使用正宗的TensorFlow。目前比较靠谱的前端+AI场景是自动化UI。设计师的设计稿自动生成为UI组件。恢复UI是一项非常机械和重复的任务。尽快把还原设计稿干掉,可以充分解放前端。目前,闲鱼的大前端团队已经取得了相关成果。AI即使涉足前端,最多也停留在工具使用阶段,也就是所谓的“包装人”。当然,即使能帮助团队解决生产力问题,也已经是了不起的成就了。建议有能力的同学可以布局看看这方面的技术,但是对于绝大多数人来说,深度学习即使是调参也很遥远。最后,这是笔者看完圆心的分享后的感受。圆心的图案很高大上。主要从技术形态、技术影响、技术生态等方面进行阐述。对于现在的笔者来说,这个小图案似乎更实用一些。
