前端开发的飞速发展,每年都给开发者带来新的关键词。2019年已经结束,2020年前端开发的关键词是什么?会是怎样的发展方向?参考2019年大前端的发展,不出所料,前端依然会围绕小程序、超级APP、跨端开发、前端工程化、新技术应用等几个方面展开(可以参考2019大前端技术趋势深度解读)。在小程序方面,今年仍然是小程序快速进步的一年。各大APP都推出了小程序能力的支持,每个前端团队都有专门的小程序开发团队,满足更快的小程序开发需求。同时,APP中的很多关键功能都被小程序取代,有的APP甚至变成了原生的小程序壳,上层的应用实现都是小程序。在微信小程序出现之前,大家都在谈论Hybird和ReactNative,但毕竟只是技术层面的狂欢,并没有注入业务属性。小程序的出现,一方面告诉业界Webview在当前设备上还不错,另一方面告诉业界如何让有能力的商家在超级APP上运营私域。另一方面,从技术角度来看,在上层DSL的严格限制下,超级应用可以定义符合自身诉求的Web标准,弥补当前Web标准的不足,最终实现协同与客户端,结合离线、预加载、自定义Webview,可以产生类似NSR的各种很酷的技术模型,让Web在终端内部低成本的实现Native版本的体验,而且不会被在终端外有点像Weex的尴尬。但由于需要依赖超级APP(微信、支付宝、百度、美团、今日头条等),由于各个平台采用的具体方案不同,目前小程序的实现方案也不同,有时需要开发多套代码。跨端开发在跨端开发方面,RN生态已经很成熟了,或者说发展前景不多,因为现在还是0.61版本,距离1.0版本似乎还很遥远。因此,今年谷歌生态中有不少团队转向了Flutter,尤其是FlutterforWeb的首发,让人们重新燃起了对Web前端的希望和热切。与此同时,苹果还发布了全新的UI系统——SwiftUI。同时,SwiftUIforWeb已经在开源社区中上路。SwiftUIforAndroid还会远吗?在跨端开发方面,Flutter会继续快速发展,开发者也会越来越多。FlutteronJS、SwiftUIforWeb&Android也将是开源生态值得期待的东西。毕竟跨端目前还没有完美的解决方案。前端工程在前端工程方面,开发者最重要的基本素质就是通过工具提升效率,前端开发者会在这方面不断迭代优化。之前我们聊的是Yoman、CLI等一系列的构建工具,但是团队做大之后,总觉得少了点什么。相比之下,Java同学根本没听说过SpringBoot配置工程师。今年很多团队都在构建一套完整的前端DevOps流程工具,有的团队也开始协同共建,无论是Web还是小程序项目,从新建项目、开发、联调(tiao),deployment,从测试、发布、运维到监控、统计,都有完备的工具保障和提升效率。未来,前端工程会越来越规范。展望2020年前端的发展,前端工程体系肯定会更加闭环。不再是脚手架那么简单,而是结合IDE打通业务属性,从项目初始化,到写代码,到CI,到灰度,到发布形成一个完整的闭环。ServerlessServerless的爆发几乎可以归因于前端。因为Serverless可以完美支持Node.js,使用Serverless可以帮助前端开发者解决很多在使用Node.js过程中遇到的问题。现在的前端工程师大多是专业出身。虽然不能和正宗的服务端开发同学相比,但是也可以在服务端层写很多业务逻辑。目前很多公司都在做BFF层来满足这部分需求,但是还是摆脱不了运维和机器配置的障碍。随着Serverless的逐步落地,BFF层的代码将摆脱运维、机器分配等复杂问题。同时,前端同学大概率会写这部分代码,服务端同学会专注于中端系统的实现。从商业的角度来看,商业上的试错成本也会大大降低。随着Node.js成为前端开发者的必备技能,云计算的日益普及将使Serverless触手可及。当越来越多的开发者尝到高效研发的甜头时,Serverless必将改变前端的研发模式。同时用Serverless的同学肯定会用TS。这也就意味着,如果2020年不写TS,可能真的就Out了。WebAssemblyWebAssembly是一种新的字节码格式,目前所有主流浏览器都支持WebAssembly。与需要解释执行的JS不同,WebAssembly字节码与底层机器码非常相似,可以快速加载和运行,因此性能相比解释执行的JS有了很大的提升。也就是说,WebAssembly不是一种编程语言,而是一种字节码标准。它需要使用高级编程语言将字节码编译出来,放到WebAssembly虚拟机中运行。浏览器厂商需要做的就是按照WebAssembly规范实现虚拟机。机器。使用WebAssembly,任何语言都可以在浏览器上运行。从Coffee到TypeScript再到Babel,这些都需要翻译成js才能执行,而WebAssembly是在浏览器中嵌入vm,无需翻译直接执行,执行效率自然要高很多。例如,AutoCAD软件是美国Autodesk公司生产的自动计算机辅助设计软件,可以用来绘制二维图纸和基本的三维设计图。使用时,无需懂编程,自动绘图,广泛应用于世界各地的土木、装饰、工业制图、工程制图、电子工业、服装加工等诸多领域。AutoCAD是一个用大量C++代码编写的软件,经历了从桌面到移动再到Web的多次技术变革。之前在InfoQ上有一篇演讲,题目是《AutoCAD & WebAssembly: Moving a 30 Year Code Base to the Web》,就是通过WebAssembly,可以让很多老C++代码在Web上跑起来,而且执行效率有保障。Chrome的核心JavaScript引擎V8现在包括Liftoff,一个新的WebAssembly基线编译器。Liftoff简单快速的代码生成器大大提高了WebAssembly应用程序的启动速度。2019年,很多公司开始投入人力进行WebAssembly的学习和改造。相信2020年WebAssembly将迎来爆发期。5G2019年绕不开的话题就是5G。首先,5G带宽的大幅提升带来了传统网页复杂度的进一步提升,正如2G向4G时代过渡时页面从WAP的纯文本超链接时代转变为4G全图视频一样。5G会给网络带来巨大的变化,但肯定不会一蹴而就。因为相应的配套设施也需要逐步完善,比如硬件性能、浏览器处理速度等。而服务器端渲染(SSR)绝对是捷径之一。前端轻,后台重。5G是一座桥梁。把渲染放到后台可不是同构那么简单。需要关注和优化渲染性能。WebAssembly可能会在这个契机下得到快速发展,因为它可以在后台无缝连接多种语言,后台渲染的优化也会带来前端页面开发模式和技术架构的变化。其次,5G带来的万物互联将带来不同于智能手机和普通PC的多种应用场景。VR、可穿戴设备、车载系统、智能投影、智能交互等也将把Web带入多种垂直领域,也意味着前端会有更广阔的空间。相信随着5G的大规模商用,将会诞生一批新的互联网巨头。
