2023 Web 开发年度观察报告
本来并不是很想写这类文章,很明显我这几年所有文章都聚焦在解决方案和落地经验,因此大家也可以看出,这是篇《有背景》的文章——当我接到这个需求的时候,我数了数我去年写的七篇文章,和行业趋势有个半毛钱关系。——此处插入一首阳光开朗大男孩。
本文不含娱乐圈八卦,但可能带主观吐槽,此外由于对文中提到的内容并没有深入理解,可能会有失偏颇,关注点和选材也多为「本人」感兴趣的部分,如果有误请各位大佬轻喷指正。
本人不跟风任何热点,纯属观众,能把这篇文章写完已经实属不易了(抹泪)。
年度数据观察
在全部开始之前,首先向大家推荐下几个我每年都会看的年度统计报表,主打凑个热闹:
- State Of CSS:https://stateofcss.com/en-US
- State Of JavaScript(不知道为什么至今没有放榜):https://stateofjs.com/en-US
- Survey of StackOverflow:https://survey.stackoverflow.co/2023/#overview
当然,Golang 也有自己的 H2 统计:https://go.dev/blog/survey2023-h2-results
这些统计可以帮助你更好的了解到行业画像和最新热度,即使不怎么追新也可以在最短的时间在这些报告中了解到一些本来可能不认识的技术点。
前端年度总结
刚开始接到这个任务的时候我的的第一反应是:我?前端?我追前端现在追的最勤快的是娱乐圈八卦。
就 2023 年的前端来说,没有革命性的爆点,不过某种程度上大家也都是在不断的完善前端社区过去遗留的不足。
Node.js
2023 年 4 月 Node.js 20 都来了:主要亮点包括了全新的 Node.js 权限模型、同步返回的import.meta.resolve
、稳定的 test_runner,将 V8 JavaScript 引擎更新至 11.3 版本,Ada 更新至 2.0 等等!
一个 import.meta.resolve
同步返回总算解决了之前别扭的 await import()
或者文艺复兴 require()
。
更多 Changes 参考:https://github.com/nodejs/node/releases/tag/v20.0.0
当然,一边我们为 Node.js 20 拍手叫好,另一边 Node.js 16 的世界已于 2023 年 9 月悄然落幕。让我看看现在还有多少公司在维护 Node 14 的项目。
前端框架与工具
Vue2 终于也在 2023 年 12 月 31 日达到了终止支持时间,未来属于 Vue3!
当然 Vue 为你关闭了一道门,就会为你打开一扇窗,你可以选择充值变强。
参考:https://v2.cn.vuejs.org/lts/index.html
另一方面,Vue 在 2023 年 4 月就推出了考证服务,一度引发了写 Vue 需不需要持证上岗:
当然大家可能是忘了早在 2019 年,工信部就发布了一版《Web 前端开发职业技能等级标准》,也没见各位持证上岗。
不管怎么说,Vue 项目以及整个 Vue 生态一直给我一种在个人探索开源新的可能性的感觉,如果开源世界能产生互利共赢,或许会比现在这种多数白嫖发展的更好(你说是吧 B 站)。
React 本人一直不怎么会,关注的也不是很多,不过 React 全新的文档站也一度引起热议:一方面,React 在其中努力穿插了各种交互式学习,图文并茂的文档极大的减少了上手难度,并且对于一些容易出问题和有歧义的点特别贴心的在官方文档中就指出了。
但另一方面,需要阅读一本厚厚的手册、官方也必须把常见坑写在文档里提醒开发者避免的一个系统究竟是不是一个好系统也让人感到困惑。或许 React 是把自己的心智成本放在了台面上——要精通我可是很难的,不要随便在简历上写「精通 React」了。
甚至 React 自己都提议别直接用它,而是用上层封装的框架了:
考虑到这样的学习成本,或许 React 比 Vue 更适合持证上岗 。
本条参考:https://react.dev/blog/2023/03/16/introducing-react-dev
同时,2023 年 3 月发布的 rspack 其实也很有意思,尽管一定意义上「启发」和「支持」的清单不得不让人遐想这是不是一个大型缝合怪,而从文档卖点中品出来的大概是:「是 Rust,我们换了 Rust」。关于 Rust 的话题后续再提,某种意义上也算是前端开发工具链全面 Rust 化的一小步了。但不可否认的是比起 webpack 确实有很大的性能提升。
参考:https://www.rspack.dev/zh/blog/announcement.html
除此以外,在 JavaScript Rising Stars 里有几个很有意思的项目:
Bun 终于发布了属于它的 1.0,和 Deno 一样作为 Node.js 的替代品,主打一个性能更好、语法兼容——JavaScript 运行时的战争可能才刚刚开始。
htmx 竟然在前端框架榜第二名,甚至超过了 Vue.js。
但你看他的语法像不像一场文艺复兴,梦回十年前。无论如何,在前端框架越来越复杂的当下化繁为简,回归质朴,感觉是个非常适合后端开发体质的框架。
如果你对 Htmx 感兴趣,或许还可以读一下这篇:Htmx 意外走红,我们从 React“退回去”后:代码行数减少 67%,JS 依赖项从 255 下降到 9。
TypeScript
TypeScript 5.0 在 2023 年 3 月发布,编译性能有明显提升。
而一系列新特性更像是「帮助我们更好的跳体操」,增强了一系列类型推导的能力,让之前不方便跳的体操变得更容易了。当然,装饰器、const 修饰符、Union Enum 之类的更新某种意义上也能降低跳体操的成本,毕竟谁记得整天 as const
呢。
如果你想了解具体增加了哪些 features,可以参考:https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/
一方面,TypeScript 在努力的更新自己的体操姿势,而另一方面也掀起了反叛大旗:退出 TypeScript 阵营回归 JavaScript,比如 Svelte 就宣布回归 JSDoc,从 TypeScript 退回 JavaScript。这一行为也一度引发热议,很多人都说「再也跳不动了」。
当然,我始终坚信在大型软件开发过程中「强类型约束」的必要性,虽然我刚学编程时也对于弱类型趋之若鹜,非常推崇包括 PHP、Python 和 JavaScript 在内的弱类型脚本语言,但在企业级应用的开发中,弱类型带来的隐式危害太过可怕,当接手一个几年维度的项目,没有类型定义的情况下进行改造可以说是噩梦般的体验。
而 TypeScript 为 JavaScript 提供的强类型保证简直是梦中情人(如果你不用 any 的话),唯一的问题就是跳体操的难度略高,很容易变成 AnyScript。(TypeScript 的类型推导越智能,体操成本就越小,只能说一句未来可期)
Svelte 退回 JavaScript 更多的是出于对自身项目的考虑,同时也依旧提供了 d.ts
的类型文件,所以使用者并不会受到影响。实际上 Svelte 团队也并没有否认 TypeScript 的价值,大家也不用无脑跟进。
浏览器
终于要提到我最喜欢的浏览器环节了,毕竟我长期跟浏览器出于相爱相杀的关系(指每次遇到 Chromium 的 Bug 就一阵激动)。
首先不得不提几个 CSS 的新特性,实际上 2023 年互联网上推了好多 CSS 的新特性,比如 container queries
、Cascade Layers
、Color Functions
等等,但都不知道何年才能真正落地在生产中,但是有些特性却在今年终于转正了,或许在不远的将来,我们就可以不用 CSS 预编译器了。
2023 年九月后,CSS Nesting 总算在 PC 浏览器市场遍地开花,如果你是个纯 PC 应用,那么现在你已经可以愉快的在没有预编译器的情况下使用这一特性了。
另一方面,CSS :has
选择器也让 CSS 样式变得更加灵活了,毕竟我们愁了好多年的父选择器终于有找落了,随着 2023 年 12 月 Firefox 浏览器的实装,终于可以全面开花了:
当然,关于这个特性,除了用来作为父节点外,其实还有更多的遐想空间,可以参考:https://css-tricks.com/the-css-has-selector/
Chrome 的更新方面,Chrome 113 中对开发者工具增加了一个我个人非常喜欢的功能:HTTP Mocking。现在你不需要使用额外的抓包软件(比如 Chales 或者 Proxyman)就能修改请求:
甚至是为它添加上缺失的跨域头。
关于这一点可以阅读:https://developer.chrome.com/blog/new-in-devtools-113
Chrome 116(2023.8)版本中支持了自定义画中画的 API,让任意元素置顶。给了一些需要置顶能力的 Web APP 新的展望空间(比如官方例子中的番茄时钟),当然,对于国内视频网站来说,可能更多的是给了贴片广告更多的想象空间。
可以通过这个了解更多:https://developer.chrome.com/docs/web-platform/document-picture-in-picture?hl=zh-cn
Chrome 119 版本(2023.10)开始会默认启用 WebAssembly 垃圾回收 (WasmGC),这样 WebAssembly 的未来更加具有想象空间了。比如可以支持更多的语言,不再需要将语言虚拟机编译进来,提高性能,减少目标代码体积。
可以阅读了解更多:https://developer.chrome.com/blog/wasmgc?hl=zh-cn
而让人最为头大也最重量级的恐怕就是开年大礼包的第三方 Cookie 了,尽管他是在 2024 年 1 月 4 日正式开始灰度的,但是过去一个月的日子都不太好过,上一篇文章刚刚讲过第三方 Cookie,这里就不再赘述了,可以读我的上一篇文章:禁用第三方 Cookie 战记:我的第三方 Cookie 怎么办。
鸿蒙
2023 年鸿蒙也有大动作,比如鸿蒙终于宣布不再兼容安卓,并且公布了自己的开发者生态工具,无论它抄的是 TypeScript 还是抄的是 Flutter 我其实都不太在意,某种意义上对于前端来说学习成本相对较低。搞不好这也是一波新的就业岗位呢。
只是做跨端的同学们就猛男落泪了,日子还过不过啊。
阅读了解更多:https://developer.harmonyos.com/cn/develop/
语言
刚刚我们提到 Rust 之后再谈,因此我想在语言这个篇章里聊聊今年可能会被大家关心到的几个语言,(为此甚至我还特地查了一下 wasm 算不算语言)。
但个人其实并没有用过,只能凭借自己的理解稍微提一下。
WebAssembly 的一个大更新在上面的 WebAssembly GC 中已经提到过了,如果你还有更多想要了解的特性,可以参考:WebAssembly 2023 年回顾与 2024 年展望。对于我来说,它带给了浏览器这个运行容器更多的可能性,或者可以作为跨语言的的兼容层使用(FFmpeg 可能是经典场景吧)。
Rust 在 2023 年依旧是科技与狠活的代名词,这不仅体现在前端的 All in Rust 重构中,实际上服务端、AI 领域也都能找到他的影子。
比如 Nginx 官方开坑:模块使用 Rust 编写,相比 Lua 或者 C++,Rust 更能让我接受(好比 Excel 支持了 Python),不过项目目前处于「WIP」状态,希望能够把这个坑完善好,项目地址:https://github.com/nginxinc/ngx-rust。
而因为其可靠性、高性能,之前的区块链、现在的人工智能场景也大量的使用 Rust 进行开发,目前 Rust 似乎成为了系统编程的头把交椅。毕竟 C++ 虽然快,但实在太折磨了,而 Rust 更现代化,同时提供了高性能,为什么不呢?
但与此同时,Mojo 的横空出世或者又会带来新的革命,首先它兼容了人工智能界大佬 Python 的语法,甚至可以复用 Python 库,像极了每个想要淘汰上时代语言的新语言的做法。而比 Python 快 35000 倍这个数字实在太过诱人。尽管我并不会太过纠结语言间的性能差距,但谁不想要一个更快的语言呢。
关于这一点也可以阅读:Mojo 正式发布! Rust 能否与之匹敌?
数据库
数据库上不得不提 StackOverflow 年度统计中的一个神奇数字了:「PostgreSQL 超越 MySQL 成为开发者心头好」,不知道这一增一减有没有锅在 Oracle 的嫌疑,不过 MySQL 其实也在努力为自己擦屁股,比如 MySQL Router 终于实现了读写分离,尽管我们常常说「读写分离」,但应用层的读写分离和引擎层透明的读写分离还是差了很多的,极大程度的减少了数据库和开发的管理、研发成本。
关于 MySQL 支持读写分离可以阅读:https://dev.mysql.com/doc/mysql-router/8.3/en/router-read-write-splitting-configuration.html
另一方面,今年国产数据库处于遍地开花状态,但我依然对国产处于一个观望状态,一方面是 MySQL Based 我为什么不直接用 MySQL,另一方面是其稳定性和可靠性还没有经受住一些大型应用的验证。当然,政府和银行有了更好更新的选择。
本想再聊聊因为 AI 而爆火的向量数据库,但是本人实在没什么了解,所以还是不多说了。
大模型
如果要提名互联网行业 2023 年度热词,那我估计 GPT 一定榜上有名,自从 OpenAI 推出 ChatGPT 后,大模型应用层出不穷,现在谁上班还不用个 ChatGPT + Copilot 呢(或者类似的组合)。
遥想当年,从支持向量机的复杂公式,到深度学习苦哈哈的写爬虫、区分训练集测试集还要担心过拟合,到现在只要会打字,写 Prompt 就能实现自己的专属 AI 应用也不过寥寥数年,世界变化的实在太快了。
紧随 ChatGPT 的脚步,国内也有自己的文心一言、讯飞星火、豆包,而海外 Google 也推出过 Bard、NewBing 等等,但强度仍然差了一个版本号。
而模型上,GPT 升级到了 GPT4,甚至有了 GPT4V,DALL-E 2 升级到了 DALL-E 3,Stable Diffusion 也升级到了 Stable Diffusion XL,给应用层开发带来了更多的可能性。
包括上面提到的 ChatGPT / Copilot,你可能还用过:
- 集成工具:Poe / TypingMind
- 开发者工具:Cursor / Jetbrains AI / v0.dev
- 写作:Notion AI / Grammarly / Office 365
- 图像生成:Midjourney / Imagen
全民 AI 时代正在到来,但比起应用软件,我个人更希望 AI 能结合硬件,让生活变得更好,比如阿尔兹海默症老人看护之类的社会问题。
而 AI 带来的版权问题可能是长期挥之不去的一大问题,尤其是对于图像和文章生成类的工具,不能说让创作者没饭吃,但一定程度上确实侵犯了他们的版权(未经允许拿来训练,生成了相似的画风)。
当然对于我个人来说,我对于 AI 的看法依旧不忘初心:这辈子我就想玩到 VRMMO,类似于「刀剑神域」或者「加速世界」,希望有生之年虚拟世界能真的是「世界」。
降本提效
说到降本提效,就不由得说起一直以来议论的云计算成本的问题了,实际上有很多公司在评估了成本后决定从下云——转回自建机房,来更好的控制成本以及对应用程序和数据做到完全的控制。
关于上云还是自建的议论一直以来都没有停下来过,国内公有云的稳定性也一直为人诟病。
互联网终于从「加机器」「上云」到了关注基建成本、注重资源消耗的时代了,虽然大厂依旧有钱,但可能在不远的将来就会一个 U 一个 U 的抠了。
有兴趣也可以阅读:
在我看来,更多的不是下不下云,而是从「上了云我们就可以减少对基建的建设」变成了「你也不能乱来」,开始真正对应用进行资源消耗的管控了。而具体最终的选择是不是下云,还是得结合实际情况来看。
降本增效的另一面,是今年国内外大厂频繁的宕机,前有 Twitter(X) 、苹果宕机的珠玉在前,后有国内大厂的前赴后继,比如「腾讯视频」「阿里云」「语雀」「滴滴」「Boss」「钉钉」「B 站」,让大厂一直以来对自己做高可用建设的分享变成了年度笑话。
当然,这里并不是说高可用真的没用导致的问题,回顾大部分事故,似乎都是由一个非常智障的人工错误所导致的问题,也就是说,高可用并不防呆,防呆更像是个项目管理、研发流程上的问题。
另一方面,也确实和「裁员裁到大动脉」有密不可分的关系,大厂过河拆桥式的裁撤老人,导出了问题找不到人的情况也比比皆是,降本增效也就成了降本增笑。
总结
总的来说,2023 年对于互联网依旧是爆发式的一年。
实际上,前端娱乐圈也依旧时常有乐子发生(这可比技术好看多了)。
大模型会不会让我失业我也并不清楚,但我相信未来 AI 能让生活变得更好。
你问 2023 年后端在干嘛?后端在闷声发大财吧。
植入部分
如果您觉得文章不错,可以通过赞助支持我。
如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。
学习了~