当前位置: 首页 > news >正文

前端的未来已然到来

随着整个软件行业正逐渐转向以打包、托管与抽象解决方案为主体的新形态,后端与基础设施带来的麻烦正越来越少,而立足堆栈顶部的前端工程师开始成为施展空间最大的时代宠儿。甚至不只是他们,如今无论是前端、后端还是运维开发者,他们在描述自己的工作流程时普遍表示,会尽可能将底层问题交给托管服务商打理。

换句话说,前端开发已经不再是系统生命周期中的辅助性要素。

关于前端未来图景的讨论目前颇为流行。虽然有观点强烈反对 AI 崛起意味着“前端开发既消亡”的判断,但也有人认为 AI 及无代码 / 低代码将增强前端开发者群体、而非直接将其取代。但纵观这种种意见交锋,我发现人们普遍忽略了一个重要问题:随着抽象解决方案不断改善后端与运营层面的工作难度,前端开发者在采购决策中的话语权将持续增长。

从 Baas 到 PartyKit

让我们先从专为前端工程师提供服务的供应商说起,包括如何利用云抽象确立自身市场地位。

初次测试 @partykit_io
我喜欢构建实时应用程序,所以很高兴终于亲自尝试了一回。我是 @threepointone 的忠实粉丝
pic.twitter.com/JX1SR5CX7c
— nader dabit (@dabit3)*2023 年 11 月 30 日

PartyKit 公司 CEO Sunil Pal 受邀参加了 Changelog 前端播客 JS Party。Pai 不仅在 React、JavaScript 和 CSS 领域负有盛名,PartyKit 还专门面向前端工程师群体。Pai 的最新项目凭借对实时同步的显著简化而受到广泛关注——长久以来,这个问题一直困扰着希望允许多位用户同时工作的多人协作类应用开发者们(包括 Figma、Google Docs 还有 Deplit)。

PartyKit 代表着前端崛起的又一个令人信服的案例。PartyKit 不仅证明 JS 领域仍在酝酿创新,也表明了前端买家市场的稳健性。供应商们注意到专门针对前端开发者的平台能够获得成功,因此渴望推出自己的方案来满足需求。JS Party 播客联席主持人 Kevin Ball 表示:

我喜欢 PartyKit 说过的一句话:“它就像是 Vercel 或者 Netlify,只是采取实时构建。”Vercel 和 Netlify 模式都很伟大,它们的亮点就在于能把前端开发者的很多任务承接过来,不但让部署更加轻松易行、而且能够轻松与其他方案对接。而多人协作却长期做不到这一点。

Ball 认为,这些为了消除后端运营管理而诞生的平台在市场上开创了先河。除了前提提到的 Vercel 和 Netlify 之外,还包括 Supabase、谷歌 Firebase、MongoDB Atlas、亚马逊云科技的 Amplify 以及 Appwrite 等 BaaS 公司。另外还有 Zephyr Cloud 之类的厂商,这是一家由微前端容器化技术 Module Federation 的缔造者及维护者建立的云服务商,旨在降低微前端的开发和管理难度。

总之,越来越多的科技大厂和初创公司都开始将前端开发者视为消费力强、规模可观的目标受众。人们也都意识到,自托管运营与基础设施会带来沉重的认知负荷,更不用说数据库、安全性、身份验证和可观察性等带来的巨大挑战。现在,前端开发者可以把这一切都交给服务商负责,不再需要内部处理。

抽象度持续提升

越抽象越好……
— Betty Junod (@BettyJunod)*2019 年 9 月 6 日

随着云托管抽象的兴起,一系列软件开发趋势也由此成形,让前端开发者获得了更具份量的话语权。抽象解决方案简化并扩展对原语的访问,降低了原语管理难度。仍然以 PartyKit 为例,其中包括 Cloudflare 设计的 Durable Objects 持久对象,它们本质上就是具有内存状态的 Cloudflare 工作线程。可以看到,这些原语正逐步让位给托管服务,而由此掀起的趋势正给前端开发带来深远影响。

首先,软件开发行业的抽象化进程正在服务和语言层面有所体现。程序员们花在裸机和低级语言编程上的时间越来越少。尽管 C、Assembly 和 Fortran 等人类可读性较差的语言仍具有一定生命力,而且 Rust 支持者阵容也在不断扩大,但大多数日常开发工作都集中在为堆栈顶部编写高级代码。

GitHub 发布的 2023 年 Octoverse 现状报告也体现出这一趋势。根据相关研究,在“2020 万开发者”(指拥有 GitHub 账户的个人)当中,“过去一年间开发者数量增长了 21%”,其中 JavaScript 仍是最受欢迎的语言。RedMonk 公布的语言排名也符合这一发现,自 2015 年以来,JavaScript 每年都稳居最流行编程语言榜首。事实上,在排名前七位的语言中,有六种纯位于堆栈顶部,而且有三种为客户端语言(分别是 JS、CSS 和 TypeScript)。我们从这些调查中可以得出结论,即随着软件领域继续迅速发展,领域内的大部分新人都集中在了前端开发层面。

老实说,身为一名开发者,最让我兴奋的就是能在短短几天内就构建一个项目。
我热爱 Next.js、Vercel 和 Tailwind 堆栈让我能够快速完成开发的感觉,特别是在跟 @replicatehg 和 @OpenAI 配合使用来开发酷炫 AI 应用的时候。

除了开发者使用的编程语言之外,现代软件开发还高度依赖于将繁琐部分和复杂性服务抽象出来。虽然一部分系统管理员仍在以尖锐的言语对这种趋势提出批评,但客观事实表明,将运营部分剥离出来的作法已经越来越普遍。毕竟运营很难、基础设施很贵,安全性与合规性的风险也很高。

API 经济与云原生

前端开发者江湖地位的提升,源自抽象机制的迅速增加,而且这种趋势仍将长期持续。托管服务能够将复杂且耗时的任务(例如用户身份验证)以及高监管要求的服务(例如 POS 系统)留给领域专家,以省时省力的方式提高安全性。如此一来,企业就能专注于处理用例中特有的业务逻辑。特别是在前端工具与生态系统配置层面,这种面向抽象的整体转变也与此前全栈化潮流的失败有关。全栈工程师的出现虽然对企业雇主有利,但却受到开发者群体的严厉谴责,因为指望开发者承担一切必然给他们带来过重的认知负担。正如 Laurie Voss 所说:

如果不能把细节都抽象出去,我们根本无法在堆栈中生存下来。

下面我们重新审视所有 API 经济,深入探讨抽象这个主题。自云计算诞生以来,API 就一直扮演着重要角色。Salesforce 和 eBay 早在 2000 年就开放了其 Web API 的访问权限,之后通过提供 API 来扩大市场份额的理念开始“吞噬整个世界”,在现代软件开发中地位日显,并为前端工程师们带来了巨大助益。Couchbase 联合创始人、目前供职于 Fireproof 公司(一家针对前端开发者的数据库初创企业)的 J Chris Anderson 表示:

API 正被全面集成进前端,这也是前端开发者能获取话语权并掌控采购决策的根本原因。

最近,API 驱动开发也开始在大语言模型(LLM)领域全面开花。开发者无需训练自有模型或在本地进行托管,而可以使用 OpenAI 提供的 ChatGPT、谷歌的 Gemini 或者 Anthropic Claude 等选项轻松创建聊天机器人,使用这些厂商面向开发者提供的直观无缝 API 集成功能。事实上,OpenAI 的定制化 GPT 还提供个性化体验,消除了训练和自托管大模型的复杂挑战。他们还在认真优化开发者体验,提供丰富的技术文档、快速入门指南与 SDK 资源。

除了通过 API 给前端工程师提供的便利之外,技术厂商还为这部分用户提供云原生形式的抽象方案。Begin 公司联合创始人 Brian LeRoux 就对前端开发者群体的前景抱乐观态度,认为该领域更能发挥云优势。从技术提供商的角度来看:

前端工程师是初创公司进军云市场的绝佳切入点。

由于前端开发者在构建动态及交互式网站时必须考虑后端流程,因此会敏锐地意识到无服务器及云托管方案的重要性。事实上,服务器 / 客户端二分模式中仍存在一系列挑战,往往会占用优秀开发者们大量的时间和精力。

抽象问题

当然,对这些高度抽象解决方案的采用同样需要权衡。抽象产品和服务通常以 API 和库的形式交付,也就是将他人编写的代码移植到开发者自己的项目当中。这既是它的核心卖点,也会带来巨大风险。抽象解决方案迫使项目呈现出特定形态,因此往往难以扩展。

大家应该都听过这个经典案例,就是 Twitter 被迫将后端从 Ruby on Rails 重写成 Scala(基于 Java 构建)的形式,原因就是像 Java 这样的低级语言扩展性更好。在涉及繁重的进程与缓存层处理时,像 Java 这样的语言仍然拥有不可替代的价值。然而,像 Twitter 这样的大型应用程序属于极端案例,并非普遍情况。也就是说,这种成长的烦恼并不会阻碍众多开发者继续使用 JavaScript 和 TypeScript。顺带一提,Java 22 还采用了高度简化的语法,因此在提交体验方面甚至胜过不少其他高级语言。

这样的更新让 Java 看起来更类似堆栈顶部的语言。这绝对会吸引到更多全栈工程师。*@redmonk
pic.twitter.com/9Qmuos5ltW
— Dr. Kate Holterhoff (@KateHolterhoff)2024 年 2 月 26 日

除了扩展问题之外,将复杂性抽象出去的服务和产品在托管时往往成本更高。Vercel 通过将 AWS 原语打包在零配置简单构建流程中来简化部署,而用户则为这样的便利性体验付费。这确实导致部分开发者抱怨 Vercel 的使用成本高到离谱,但很多公司还是发现,尽管托管成本愈发夸张,但由于不必聘请工程师来管理基础设施,所以这仍然物有所值。Branch Insurance 联合创始人兼 CTO Joe Emison 就提出了利用云服务配合纯前端初级开发者推动业务运营的案例:

由于我们拥有更优质、更强大的云服务可供选择(包括亚马逊云科技、Google Cloud Platform、Azure、Netify、Twilio 以及 Stripe),所以能更多将开发者精力集中在界面设计上。

换句话说,通过将运营移交给托管提供商,Branch 的工程部门得以专注于开发 UI 与前端界面。尽管 Branch 的例子有点极端,但软件开发的未来确实正朝着 Emison 描述的方向发展。

下面,咱们再来聊聊众多开发者高度依赖抽象与托管服务之后,可能带来的最糟糕的后果:整个行业都将面临生存威胁。之前行业中就存在类似的刻板印象,认为这种趋势会令前端工程师“无脑化”并最终彻底被业务不过关的初级开发者所充斥。也确实有人在认真分析这种刻板印象,认为前端主导的开发图景意味着软件工程将彻底消亡。沿着这样的思路推进,前端工程师最终将趋同于纯粹依赖低代码与无代码解决方案的非技术类开发者。如果说这波 AI 加低代码 / 无代码真能取代软件工程师群体,那么“技术正日渐衰落”的判断似乎也并非危言耸听。

但我倒不觉得前端驱动软件开发的前景就真有这么悲观。相反,我觉得这正是前端领域迸发出创新能量的新机会。那帮想以前端工程师“无脑化”为前提,在市场上兜售严重溢价的黑盒解决方案的厂商,最终都将惨遭失败。

前端未死,只是换了新样貌

这也引出了我关于前端工程师话语权的最后一点分析。与任何其他技术转变一样,这波以前端为重点的过渡同样不会是均匀的。结合软件开发的特殊背景,这必然伴随着角色的重新分配以及传统上泾渭分明的前端与后端、客户端与服务器,乃至静态与交互之间界限的逐渐模糊。其实不少资深从业者,长期以来一直在批评前端和后端这样的表述,认为“十多年来这种硬性划分一直脱离实际,但时至今日却仍然存在。”Reddit 用户 n9iels 就此做出回应:

根据个人经验,我发现前端领域正从纯 HTML/CSS/JS 转化为同时包含前端和后端。特别是对完全使用 React 或 Angular(SPA)构建的网站来说,前端与后端之间的界限已经越来越模糊。

由于前端、后端以及全栈之类的术语无法准确反映当今的系统生命周期,所以终将被新的开发者类型所取代。虽然我估计前端这种说法还会持续一段时间,但就现实世界的实践方式而言,这个领域必然会持续转变。新一代工程师将取代前端开发人员,尝试利用 API 和云服务来构建起高性能的交互式 UI。这批开发人员将跨堆栈进行运营,而不再像之前的全栈工程师那样号称能玩转一切。他们只是在利用一切可以利用的工具,并着眼现实问题开展创新改进。

总而言之,前端的江湖地位日益兴盛,而作为一门学科其仍在探索途中。尽管 AI 技术繁荣与宏观经济萎靡带来了种种不确定性,但厂商们必须意识到,身处堆栈顶部的开发人员的确处于更加有利的位置。行业与市场正变得愈发复杂和成熟,而前端领域的开发人员正在直面这些挑战。在我看来,所谓技术大牛对于无数细节的沉迷并非正确的前进方向,客户端与 UI 体验的全面改进(包括缓存、WebAssembly、水合以及容器化微前端)才是正道。我们之所以看到许多最耀眼的人物和最具开拓性的开发者愿意投身于前端,恰恰是因为前端汇聚了他们最关注的前沿技术。

相关文章:

前端的未来已然到来

随着整个软件行业正逐渐转向以打包、托管与抽象解决方案为主体的新形态,后端与基础设施带来的麻烦正越来越少,而立足堆栈顶部的前端工程师开始成为施展空间最大的时代宠儿。甚至不只是他们,如今无论是前端、后端还是运维开发者,他…...

Open CASCADE学习|gp_XYZ与gp_Mat

gp_XYZ和gp_Mat是Open CASCADE Technology (OCCT)中的类,用于处理3D几何和变换。 gp_XYZ gp_XYZ类代表了一个三维空间中的点或向量。它通过三个坐标值(X, Y, Z)来定义位置或方向。这个类提供了多种操作,比如计算两点之间的距离、…...

BMS绝缘电阻检测原理【转】

...

优秀的测试开发工程师需要掌握哪些技能?

科技的发展与网络技术的广泛应用,让测试开发已成为软件开发过程中不可或缺的一环。测试开发工程师是为确保软件程序的质量和稳定性而工作的专业人士。但是成为一名合格的测试开发工程师需要具备哪些技能呢?一起来看看吧! 优秀的测试开发工程…...

思维树(Tree of Thoughts)的概念

思维树(Tree of Thoughts,简称ToT)是一种利用大型语言模型进行问题解决的框架。这个框架借鉴了人类认知研究的成果,特别是关于人类在做决策时的两种思维方式:快速、自动、无意识的模式(称为“系统1”&#…...

探索设计模式的魅力:抽象工厂模式的艺术

个人主页: danci_ 🔥系列专栏:《设计模式》《MYSQL应用》 💪🏻 制定明确可量化的目标,坚持默默的做事。 🚀 转载自文章:探索设计模式的魅力:抽象工厂模式的艺术 抽象工厂模式&…...

果园系统养殖游戏喂养偷菜种植浇水养成小程序

装扮 通过购买装扮场景切换不同的农场风格 土地升级 通过特定的材料对土地和房屋进行升级 日志 记录道具的使用数量及金币农作物的收入情况 幸运转盘 可用金币进行抽奖 宝箱开启 获得宝箱后可以通过金币开启 每日签到 每日签到获得奖励 系统公告 可以第一时间知道游戏的更新和…...

Windows版PHP7.4.9解压直用(免安装-绿色-项目打包直接使用)

安装版和解压版 区别 安装版: 安装方便,下一步------下一步就OK了,但重装系统更换环境又要重新来一遍,会特别麻烦解压版(推荐): 这种方式(项目打包特别方便)能更深了解mysql的配置&…...

凡泰极客亮相2024 亚马逊云科技出海全球化论坛,为企业数字化出海赋能

随着「不出海,即出局」登上热搜榜单,企业出海已成燎原之势,3月29日,2024 亚马逊云科技出海全球化论坛在深圳成功举办,凡泰极客创始人梁启鸿受邀出席,并以 「App 2.0:以SuperApp构建智能数字生态…...

新零售门店、商品、会员管理指标体系总览

新零售,旨在打破传统零售业的边界,引入先进科技和数字化手段,通过整合线上线下渠道,全面提升用户体验,并实现更智能、高效、个性化的零售运营模式。这一模式不仅仅关注销售产品,更注重构建全方位的购物生态…...

网上订餐系统|基于springboot的网上订餐系统设计与实现(源码+数据库+文档)

网上订餐系统目录 目录 基于springboot的网上订餐系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户功能模块的实现 (1)用户注册界面 (2)用户登录界面 (3)菜品详情界面 &#xff08…...

python的抽象类和抽象方法

抽象类是一种不能直接被继承的类。举个例子,我们可以从类Creature衍生出类People,Cats,其中前者两条腿走路,后者四条腿走路,而单独的类Creature却没有一个几条腿走路的方法,因为这是不确定的。 &#xff0…...

Android MVVM架构学习——ViewModel DataBinding

关于MVVM架构,我并不想花篇幅去做重复性的描述,网上一搜都是一堆讲解,大家可以自行了解,我所做的只是以最简单的例子,最有效的步骤,从零开始,去实现一个相对有点学习参考价值的项目。 先来看本…...

防抖与节流

...

理解 Nginx 的多站点配置:为每个网站单独配置

Nginx 是一个高性能的 Web 服务器,广泛用于托管和管理网站。它之所以受欢迎,部分原因在于它的灵活性和强大的配置能力。特别是对于管理多个网站,Nginx 提供了一种高效且组织良好的方法。让我们逐步了解如何使用 Nginx 配置多个网站&#xff0…...

支持向量机模型pytorch

通过5个条件判定一件事情是否会发生,5个条件对这件事情是否发生的影响力不同,计算每个条件对这件事情发生的影响力多大,写一个支持向量机模型pytorch程序,最后打印5个条件分别的影响力。 示例一 支持向量机(SVM)是一种…...

轮转数组(力扣)

189. 轮转数组 - 力扣(LeetCode) 189. 轮转数组 题解 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 样例输入 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮…...

批量插入10w数据方法对比

环境准备(mysql5.7) CREATE TABLE user (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 唯一id,user_id bigint(10) DEFAULT NULL COMMENT 用户id-uuid,user_name varchar(100) NOT NULL COMMENT 用户名,user_age bigint(10) DEFAULT NULL COMMENT 用户年龄,create_time time…...

HAL STM32 I2C方式读取MT6701磁编码器获取角度例程

HAL STM32 I2C方式读取MT6701磁编码器获取角度例程 📍相关篇《Arduino通过I2C驱动MT6701磁编码器并读取角度数据》🎈《STM32 软件I2C方式读取MT6701磁编码器获取角度例程》📌MT6701当前最新文档资料:https://www.magntek.com.cn/u…...

如何排查nginx服务启动情况,杀死端口,以及防火墙开放指定端口【linux与nginx排查手册】

利用NGINX搭建了视频服务,突然发现启动不了了,于是命令开始 使用以下命令查看更详细的错误信息: systemctl status nginx.service Warning: The unit file, source configuration file or drop-ins of nginx.service changed on disk. Run…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

python/java环境配置

环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...