infoq前端(大前端领域)
infoq前端(大前端领域)
InfoQ编辑部InfoQ
提起大前端,总会有人抱怨学不动了,因为技术更新太快。那大前端的风会吹向何方?是跨端、Flutter、Serverless,还是小程序?为回答上述问题,结合InfoQ编程语言4月排行榜的调查结果,我们采访了大前端领域的三名程序员,试图了解这个领域的程序员们。
发现1:Web开发依然是大前端领域的主流
基于投票数据,我们发现Web开发得票率为68,由此可见它依然是大前端领域的主流。iOS开发得票率为16,排名第二,而Android开发则以5的得票率排名第四。同时,我们注意到,小程序开发以6的得票率超过Android开发的5。
在采访中,网名叫月熊的程序员表示,自己在大前端领域最关心的技术方向是跨端开发、微前端和数据可视化交互。而他所在公司的业务是面向小批量制造领域的数字化工厂和智能制造行业,主要工作涉及基于Web的跨端应用开发,包括Web端、移动端、桌面端、小程序端,以及部分3D数据展示和模型处理。
而在某银行信息科技部基础技术板块担任前端负责人的英楠同样也在关注跨端框架,他说:最想学习和实战Flutter。
发现2:JavaScript在大前端领域独霸天下
基于投票数据,我们发现在大前端领域编程语言使用情况上,JavaScript以78。5的得票率,排名第一。而TypeScript得票率为42。9,排名第二。
考虑到这两门编程语言都属于JavaScript生态,JavaScript在大前端堪称独霸天下。前端程序员英楠在采访中称,使用最多的编程语言还是JavaScript,因为工作主要还是面向B端,几乎全部项目都是用JavaScript,公共组件则是用TypeScript开发。
另一位前端程序员月熊则表示,自己在工作中使用最多的编程语言是TypeScript,相比JavaScript,它有静态语法特性,更符合大规模、跨端协作项目的开发。
前端程序员小吴说:使用最多的编程语言是JavaScript。自从有了node。js后,JavaScript几乎可以处理任何业务逻辑,包含后端的数据增删查改、前端页面渲染和用户交互操作等。阿特伍德定律说,任何可以用JavaScript来写的应用,最终都将用JavaScript来写。
发现3:选择编程语言最看重的是语言生态
在选择编程语言时,最看重的因素是什么?答案是语言生态。语言生态得票率为63。4,排名第一。对前端开发者来说,语言生态是最看重的,它包括工具链的完备程度,库、框架等完善程度。生产效率得票率为22。2,排名第二,而语言的功能特性则排名第三。
发现4:Vue和React是最流行的前端开发框架
基于投票数据,我们发现Vue。js以46。5的得票率排名第一,被视为最流行的前端开发框架。而React紧随其后,以31。5的得票率排名第二。Flutter排名第三,得票率为8。5。
月熊在采访中表示,最常用的前端开发框架是React,其生态圈较为完善,编程习惯上更易于贴合工程化的需求。
英楠同样是React的忠实用户,他说:最常用的是React。React生态非常完善,满足了我们项目的一切需求,市面上能与抗衡的就只有Vue了。
对前端程序员来说,编程语言或框架对他们的工作非常重要。月熊认为,不同编程语言或框架几乎决定了不同的生态圈,这会极大地影响到项目组织、团队组织以及第三方库的使用。他自述,他们团队早年间选用过Angular1,但后面在性能和升级上都碰到较大的困难。
英楠称,在React这类数据驱动试图的前端框架前,一个项目使用的是JSP渲染前端页面,前后端完全耦合,连开发一个简单的需求都非常痛苦,后来,2018年使用Vue将老项目进行了渐进式迁移,开发效率提升至少5倍。
小吴说:React和Vue各占一半。比较严谨的业务逻辑,使用React和TypeScript。要快速开发的小项目则使用Vue2。此前还重度使用过Angular。js。
大前端的未来与前端程序员的核心能力
由国内业界发明的技术名词大前端如今逐渐成为前端领域的大趋势。而前端未来会如何发展?在月熊看来,随着前端项目的不断增大,前端在未来应具备更强大的运行能力,可以提供更复杂的交互,也期待VRAR时代的到来。英楠则表示,近些年,前端井喷式增长得到缓和,但人才缺口仍然巨大,希望在AI前端领域有更多突破,解决绝大多数的重复劳动,解放前端人员的生产力。
当然,大前端的变化反过来也会影响前端程序员。现在的大前端有点全栈的味道,并且以前的胶水代码越来越行不通,前端程序员也会强化自己的工程思维,具备体系化知识,并且能熟练使用各种框架。
英楠表示,未来最看重的前端程序员核心能力就是工程师能力。我认为前端程序员未来的核心能力,除了前端专业技能外,工程化思维、分析问题和解决问题的能力以及学习能力都非常关键。他说。
而月熊认为,前端程序员未来要具备的核心能力分三部分:
第一,编程基本素养,包括但不限于编程范式、设计模式、数据结构与算法等;
第二,工程化能力,能从编写简单的页面到Hold住大型项目;
第三,产品交互的感知能力,能理解产品设计,能自觉践行某些交互优化的原则范式,为用户提供更好的交互体验。