发现 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 了。”

对前端程序员来说,编程语言或框架对他们的工作非常重要。月熊认为,不同编程语言或框架几乎决定了不同的生态圈,这会极大地影响到项目组织、团队组织以及第三方库的使用。他自述,他们团队早年间选用过 Angular 1,但后面在性能和升级上都碰到较大的困难。

英楠称,在 React 这类数据驱动试图的前端框架前,一个项目使用的是 JSP 渲染前端页面,前后端完全耦合,连开发一个简单的需求都非常痛苦,”后来,2018 年使用 Vue 将老项目进行了渐进式迁移,开发效率提升至少 5 倍“。

小吴说:“React 和 Vue 各占一半。比较严谨的业务逻辑,使用 React 和 TypeScript。要快速开发的小项目则使用 Vue 2。此前还重度使用过 Angular.js。”

 大前端的未来与前端程序员的核心能力

由国内业界发明的技术名词“大前端”如今逐渐成为前端领域的大趋势。而前端未来会如何发展?在月熊看来,随着前端项目的不断增大,前端在未来应具备更强大的运行能力,可以提供更复杂的交互,也期待 VR/AR 时代的到来。英楠则表示,近些年,前端井喷式增长得到缓和,但人才缺口仍然巨大,希望在 AI+ 前端领域有更多突破,解决绝大多数的重复劳动,解放前端人员的生产力。

当然,大前端的变化反过来也会影响前端程序员。现在的大前端有点“全栈”的味道,并且以前的胶水代码越来越行不通,前端程序员也会强化自己的工程思维,具备体系化知识,并且能熟练使用各种框架。

英楠表示,未来最看重的前端程序员核心能力就是工程师能力。“我认为前端程序员未来的核心能力,除了前端专业技能外,工程化思维、分析问题和解决问题的能力以及学习能力都非常关键。“他说。

而月熊认为,前端程序员未来要具备的核心能力分三部分:

第一,编程基本素养,包括但不限于编程范式、设计模式、数据结构与算法等;

第二,工程化能力,能从编写简单的页面到 Hold 住大型项目;

第三,产品 / 交互的感知能力,能理解产品设计,能自觉践行某些交互优化的原则 / 范式,为用户提供更好的交互体验。