最近学了一个词:数字孪生(DigitalTwin),简单来说就是在计算机世界中为现实世界的物体(飞船/城市)和系统(电力/交通)建立一个数字镜像,所以为了让数字世界和物理世界更好地交互,数字大屏也可以看作是这项技术的一个应用场景。这一概念由MichaelGrieves博士于2002年提出,随着物联网、人工智能、图形技术、工业4.0的快速发展,应用前景越来越广阔。光是谷歌你就会发现NASA、GE、微软、SAP、IBM等巨头已经部署应用了这项技术,它也是Gartner2019年Top10战略技术趋势之一。最后,如果你遇到困难在自学中,想找一个前端学习环境,可以加入我们的前端学习圈,点我加入,会节省很多时间,减少很多学习中遇到的困难。前端的未来在哪里?图片来自:DigitalTwinTechnology如何改变可视化前端为应用而生,人机交互技术是我们赖以生存的基础,以应用为桥梁连接用户和数字世界是我们的使命。然而前端的生存空间长期被压缩在Web领域,DigitalTwin这种新形态无疑会为我们打开一片新天地。Gartner的报告中还有两项技术与前端密切相关:沉浸式技术:增强现实(AR)、虚拟现实(VR)、混合现实(MR)等智能空间:智能城市、智能汽车、智能stores等看到未来居然有3个战略技术跟前端相关,真是让人激动。不过不用担心,既然是战略,就意味着三五年内未必见效。仔细分析后,我们会发现目前的前端技术在这些领域还远远不能胜任,令人担忧。远处的风景很美,但要想顺利到达,还是需要早做准备。站在201X年的末尾,互联网下半场的开始,我们不妨结合Gartner的报告来分析一下:未来10年前端技术变革在哪里,哪些方向值得关注大投资?回首过去,“以史为鉴,可知兴衰”,如果历史是一波波浪,其过去阶段所形成的轨迹足以预知未来。回顾Web技术的发展,我们可以清楚地看到推动变革的三个关键因素:引擎:四大引擎尤为重要:V8:不仅提高了JS的执行效率,有助于ES规范的实施,还赋予了Node.js浏览器引擎的诞生:以Webkit、Blink、Chromium为典型代表,浏览器的快速发展奠定了WebNode.js繁荣的基础:极大地拓展了前端的生存空间,以至于“任何可以用JavaScript编写的应用程序,最终都将用JavaScript编写。”混合容器:让App统治的移动互联网时代也为Web开发留出一席之地,小程序是开发包的典型代表:语法、框架、工具、类库在社区的推动下蓬勃发展,优秀的开源项目如星河般闪耀,前端生态成为技术圈最活跃的。虽然以React为核心的主流技术栈入门成本比较高,开发者也不可能只关心业务逻辑,但不可否认的是,应用开发正变得越来越容易。部分类型的应用甚至可以通过专门的可视化平台无需Coding即可完成,例如:门户、营销活动、问卷调查等。分工模式:创新前后端分离等分工模式,BFF(BackendForFrontend),全栈、全端、大前端,不仅提高了前端与其他工种的协同效率,也让前端可以承担应用研发.“前端+设计”组合形成的“体验技术部”也成为不少商家的标配。一些前端团队甚至发展成为应用研发团队,拥有自主研发的产品。前端的影响圈已经从应用开发扩展到用户体验甚至产品设计,基于人机交互的体验技术也开始崭露头角。这些变化因素背后有两条主线:使现有的研发工作更好:开发包是主要驱动力,一些分工模式(如:前后端分离)的创新也属于此开辟新战场线:引擎是主要推手,一些分工模式的创新(如:全栈)也属于这条线。之所以会出现这些变化,是因为一个刚需:客户端软件的生产力水平无法满足互联网应用快速增长的需求,而前端技术正好可以提高应用研发的生产力水平。虽然移动互联网的兴起一度让前端乏力,但寄生在超级App上的Hybrid容器让前端焕发了生机,小程序更是将其推到了与PC时代同等重要的位置。应用虽多,但都有其形态演化的痕迹。为了说清楚,我需要写一个文档。这里我就不展开了。我简单介绍几个最重要的:UGC内容的主流载体正在发生变化:文字->图片->短视频/直播,用户创作内容成本越来越低,主流交互终端方式正在发生变化:PC(键盘/鼠标)->手机/PAD(触摸屏/摄像头/语音),交互信息获取的主流方式越来越自然、简单:主动获取->被动推送->智能推荐,异步->实时,信息已经触手可及。这正是我们所需要的,两条主线,三类因素也是我们预测未来的重要依据。基于当前和实用的新技术,前端相关的包括:AI、Serverless/FaaS、区块链、IOT、AR/VR/MR、智能硬件、可视化应用开发。不可否认,它们都是可以在某些领域带来颠覆性革命的技术,但它们会为前端带来变革吗?下面详细分析一下:AI:核心是云端,AI应用的典型特征是“重引擎轻UI”,所以前端不在主赛道上,只能用于应用开发.目前市场上的人工智能应用大多是大数据技术的延伸,离智能还很远。人工智能作为人类科技的巅峰之作,应该在人类最难解决的问题上发挥作用,比如:语言、医疗、科研、教育、环境等。个人看好机器翻译,打破界限语言的出现将是人类文明划时代的变革。作为前端,我们也应该关注这些基础领域,学习和掌握AI技术。Serverless/FaaS:核心是云。前端能做的就是基于这项技术优化服务端Node.js的运行时和运维方式,屏蔽服务端复杂的技术细节,让Node.js打通一个服务端——sidebattledrawal可以续接,让端上需要的数据可以简洁低成本的存储和检索。当然,你也可以在其基础上优化现有的工具系统,让开发变得越来越简单。区块链:核心还是云,最相关的前端是去中心化应用(DApp)和IPFS(星际文件系统)。但DApp是一种新的应用形态,IPFS改变的是网络协议。这两个还处于非常早期的阶段,发展情况还不明朗。最好等着看会发生什么,并在适当的时候基于它们开发应用程序。IOT:核心是端,但关键技术是硬件和嵌入式系统,与前端交集不大,发展空间非常有限。除了在其上开发应用之外,还有两个潜在的方向可以看到:将Node.js和浏览器内核移植到IOT设备上,创建一个可以运行前端代码的Runtime;有些设备需要显示数据,这可以基于图形技术创建专用的渲染引擎。AR/VR/MR:核心是硬件和交互方式的改变,前端可以参与类库和应用的开发。但受限于设备,目前还不是主流应用,需要结合业务特点寻找切入点。智能硬件:一项非常酷的技术。智能音箱是当下最成功的应用,而机器人则是这项技术的终极形态。其核心在于AI、自动化控制和硬件,给前端带来的是应用形态和交互方式的升级。可视化应用开发:不写/少写代码完成开发。这是前端的夙愿。不能完全实现,但是在某些场景下是可以做到的。MFC、Dreamweaver、Flash、微软是这个领域的先行者,Wix、Webflow、Bubble、Node-RED、FrameX、PowerApps是当前值得关注的。其实质还是通过更好的开发包来提高应用的生产效率。它最大的竞争对手是成品SaaS。不买配件组装。综上所述,这些新技术的大部分关键路径和核心技术并不在前端,但我们可以作为用户参与,结合业务特点进行实践,从而更好地完成现有的研发工作,并且可以提高应用程序的交互体验。更好的。不过,仍有两项前端相关技术有望带来变革:AppRuntimeonIOT:背后是一个引擎,可以让前端应用运行在越来越多的新终端上。可视化应用开发:期望集成一些功能,最大限度地降低应用的开发成本,一窥未来。应用形式日新月异,新技术层出不穷,未来扑朔迷离……作为前端,我们应该在哪些方向进行技术储备?要想找到一个具有指导意义的技术路线图,除了上面的分析,我们还得回到前端的本质去探究变化背后不变的东西。生产力。虽然前端技术的发展日新月异,但是从程序的角度来看,有两件事没有变:终端的形态和交互方式一直在变,而其本质没有变:渲染数据:将数据从将数字世界转化为人们感知的声音或图像,图形技术、音频技术、排版技术是数据采集的核心:将物理世界的数据和人脑中的知识转化为数字世界,传感器技术和编辑器技术是核心应用的类别和交互方法在变,但应用开发始终可以分解为四个部分:Cloud:提供应用运行所需的数据、托管资源和可执行代码Side:依靠一个AppRuntime来为终端用户提供UI专项技术:业务是技术的核心本来,没有业务,前端就是一个没有根基的草根,每个业务都有自己的专业属性和专项技术。AppDevelopmentEngine:又称“开发包”,在普通工程师完全掌控的范围内提高生产力。上面的分析和语雀的业务特点整理出了前端技术的大图,下面抛砖引玉:前端的未来在哪里?图中的每一个区域都是不小的技术领域。为了完整的解释清楚,我需要专门写一篇文章。另外,很多领域我都只知道一点点,就不展开太多了。我只简单介绍几个我认为比较重要的。重要方向。AppDevelopmentEngine目前的web应用开发真是堪忧。学习曲线非常陡峭,新概念层出不穷,技术更新太快……应用复杂度比十年前高不了多少,但要学习和掌握的东西都是以前的。多次。我们身处产品研发战场的第一线,我们的装备一点也不精良,大量的精力都花在了与战斗无关的事情上。虽然生产力在提高,但跟不上业务的增长速度。AppDevelopmentEngine作为提高生产力的关键因素,在当下尤为重要。这个领域是创新最活跃的地方。从过去的发展过程中,我们可以看到一些进化的路线:从Engine的角度来看,进化背后有两个理念:CodingLess:通过强大的SDK、框架和工具让工程师更高效GoodCoding,专注于实现业务NoCoding:通过可视化IDE实现无编码,通过拖拽写入配置文件即可完成应用开发从开发者的角度,对Engine有三个期望:Productivity:必须能够提高生产力,让工程师能够高效编写健壮易维护的代码Simple&Stupid:KISS原则的核心,让开发更简单不仅可以提高效率,还可以让更多人成为前端工程师BusinessMore:研发资源非常宝贵,所以工程师对业务的关注是提高绩效的关键。未来的发展将遵循这些路线。CodingLess和NoCoding各有各的应用场景,需要根据业务特点选择重点进行投资。但是有一件事我觉得是不可避免的:要开发出高质量的应用,还是要靠Coding,但是你写的代码会越来越少。没有Coding太完美,应用场景有限,有成品SaaS作为更好的替代品,我更喜欢用CodingLess模式实现主线业务,通过一些机械的、重复的、一次性的开发工作通过NoCodingCoing模式完成。但是,NoCoding的一个分支VisualProgramming非常值得关注。在编程教育领域有着很好的应用前景。Scratch和Blockly就是典型的代表。编程教育不仅蕴含着巨大的商机,也为我们带来了源源不断的生力军。.语雀专项技术语雀致力于打通“知识”与“大脑”的双向通道。背后是两个关键技术:编辑器:知识从大脑到数字世界的关键,语雀目前的文本编辑器,目录编辑器还是很基础的知识可视化:知识被人脑感知和理解的关键,赋予知识最好的呈现形式有利于知识的理解和传播。“数据可视化”、“数字孪生”目前与语雀关联不大,但未来肯定与语雀密切相关:数据不仅是科学研究的基础,背后还蕴藏着知识。数据可视化可以更好地将这些知识呈现给人们。数字孪生和知识组合是颇具想象力的空间,例如:数字博物馆、虚拟天文馆、模拟生态系统AppRuntime为什么说AppRutime是变革的生力军?因为历史告诉我们:引擎创新是开辟新战场的核心驱动力,而AppRutime的核心恰好就是引擎和它上面的SDK。长期以来,前端技术既受益于浏览器引擎又受限于浏览器引擎,大部分前端工程师只能在AppDevelopmentEngine层工作。但在终端和应用形态的多样性越来越强的今天,移动互联网打破了浏览器的一统天下。不难看出,浏览器技术的演进速度已经不能满足越来越多的新终端和应用形态。向上。可以大胆预测,这一领域必然会发生变革。变化可能是浏览器的进化引起的,也可能是一些新的引擎。我们已经可以看到一些迹象:Office以惊人的速度和UI一致性覆盖所有终端。猜测背后有一套跨终端的UI方案。Fuchsia是一种全新的跨终端UI开发方式。Fuchsia是谷歌正在探索的一款更大的游戏。从OS层面推动变革的关键在于:前端工程师有机会参与到这场变革中,因为引擎的核心技术——图形技术在数据的推动下成为了很多团队可以熟练使用的技术可视化和H5游戏。应用类型的多样性也会在一些垂直市场为AppRuntime留下空间。这方面已经有一些成功的案例,比如:游戏领域的CocosEngine和EgretEngine,桌面软件开发领域的Electron,以后应该会有更多。还有更多。领域服务“Domainservice”对于前端来说可能比较陌生。其背后是著名的领域驱动设计(DDD:Domain-DrivenDesign),它是云端高度抽象的应用,是系统稳定的一部分。这就是为什么前端总是在修改,服务端接口可以保持不变的原因。服务器端研发有这样一条进化主线:解决编程语言问题->解决开发框架&类库问题->专注解决业务问题,Java->Spring->DDD&SofawareArchitecture就是一个典型案例。服务器之所以这么抗拒变化,是因为它侧重于领域模型抽象和系统架构设计。为什么领域服务对目前前端如此重要,因为:领域模型和领域服务是对业务的抽象,也是理解业务的直观体现。一个好的领域模型可以大大降低前端开发的成本。领域设计的相关思想和概念可以借鉴到前端,给前端带来解决问题的新思路。前端处于研发的十字路口,信息面最广,很有潜力协调产品、设计、服务器等工种,共同梳理领域模型和业务环节。关于DDD,可以参考这三个非常容易理解和掌握的经典架构的介绍:六边形架构(端口和适配器)CQRS-命令查询职责分离CleanArchitecture全功能团队前端是最接近团队的前端工程师中的用户,以及很多前端心中都有一个产品梦,这个产品可能是技术产品,也可能是用户产品。很长一段时间,我们都在为生存而挣扎,只能偷偷摸摸地玩个小玩意儿,或者参加Hackathon。但随着技术的演进,很多团队已经具备了全栈能力,并在AppDevelopmentEngine中承担了部分平台的自主研发,让这个梦想更近了一些。但是,单靠全栈能力还不足以实现完整的实现。还需要一个包括技术、产品、设计、运营在内的全功能团队来实现这一点。这样的团队,不仅可以提高协作效率,保证交付质量,还可能带来商业产品。很多公司都在往大、中、小前台的方向发展,而支撑起小前台的恰恰是全功能的团队。因此,在合适的时候,可以组建一个全功能的团队,逐步承担业务中人机交互部分的研发,让“用户体验”落到实处。前端未来的路在何方?前端技术的未来没有标准的大局。这幅图景存在于每一个企业中,要脚踏实地地建设未来。行业趋势、新技术、新产品形态都是可以撬动的因素。如果你已经有了一个愿意一起奋斗和成长的企业,你可以结合企业定期推演适合其不同发展阶段的技术大局。如果没有,也不用着急,打好技术基础,做好手头的每一个项目,结合在AppliactionDevelopmentEngine领域的业务探索和实践,逐步找到自己真正想做的业务以及您要服务的用户。软件开发是一门理论和实践并重的技术,实践尤为重要,因为最终我们要为用户写出健壮的、运行的代码。无论未来如何,在不断的学习和实践中加强对编程、技术和业务的理解才是根本。除了学习和实践与业务最相关的技术外,建议根据自己的专长和兴趣重点关注这些领域:领域驱动设计:加强领域建模和系统设计能力,努力理解业务,成为领域专家软件架构设计与软件设计理念:为系统、框架、类库注入灵魂,让代码活起来。图形技术:在应用层和引擎层都有广泛的应用场景。最重要的是,未来图形应用的比例肯定会增加。更高的AI:不需要深入底层,但需要掌握其用途。您不妨从TensorFlow开始。编程是一种实践,是应用实践的产物,是我们与世界交流的方式。未来在哪里不重要,重要的是以空杯的心态继续学习和实践,用心写下每一行代码。
