2023 年 8 大 Web 开发趋势预测

(元)框架

单页应用 (SPA) 及相关框架(例如 React.js、Vue.js、Svelte.js)都已经存在了很多年。然而,随着这些解决方案之上的元框架的兴起,可以看到应用从客户端渲染(CSR)转向服务端渲染(SSR)的明显趋势。如今,在使用 JavaScript 框架时,SSR 无处不在。

流行的 Next.js 的元框架建立在 React 之上。React 核心开发人员 Andrew Clark 将其称为 2022 年的“真正的 React 18 版本”,因为它附带了 React 团队作为较低级别的基本构建块提供的所有功能(例如 Suspense、流式 SSR)。Vercel(Next.js 背后的公司)和 React 核心团队正在密切合作,提供出色的开发者体验。Remix(最近被 Shopify 收购)是 Next.js 替代品,它采用不同的方法将 React 转变为元框架(例如,使用 Web 标准作为一等公民)。

尽管 Next.js 已经是现代 SSR 领域的有力竞争,但其他框架也值得关注:

  • SveltKit:基于 Svelte.js 构建,其最新的 1.0 版本由 Vercel 支持;
  • SolidStart:基于 Solid.js 构建,其 DX 与 React 相比有所改进。

渲染模式

虽然过去 10 年(2010 年至 2020 年)一直由单页应用 (SPA) 和客户端渲染 (CSR) 主导,从 Knockout.js 和 Ember.js 到 Angular.js、React.js 和 Vue.js,过去几年,人们对使用元框架的服务端渲染 (SSR) 越来越感兴趣。

从外部看来,这个周期似乎又要结束了,因为在多页应用 (MPA) 中使用 SSR 和 JavaScript(例如 jQuery、MooTools、Dojo.js)已经很长时间了(2005 年至 2010 年)。虽然过去 Java(例如 JSP)或后来的 Ruby on Rails 已经用于 SSR,但这次不同,因为我们依赖 JavaScript。近年来,Next.js 一直是这一趋势背后的推动力,但其他元框架(如 SvelteKit)也正在迎头赶上。

SSR 已经与静态站点生成 (SSG) 竞争了很长一段时间,以获得完美的性能(参见 Next.js 与 Gatsby.js),尽管这两种模式的用途完全不同。后一种模式用于静态内容(例如博客等网站),而前者用于动态内容(例如 Web 应用)。由于需要高度动态的内容或以用户为中心的内容并进行身份验证,开发人员不能选择 SSG(在部署前构建一次,因此是静态的),而必须在 SSR(根据服务器上的单个数据请求按需构建)或 CSR(在客户端上按需获取个人数据)之间做出选择。

CSR、SSR、SSG 并不是渲染技术的最新趋势。虽然 SSR 和 SSG 在几年前开启了性能优化趋势,但增量静态再生 (ISR) 和流式 SSR 等更细分的渲染技术开始活跃起来。前者推进了 SSG,因为它允许在每个页面的基础上静态重新构建网站(例如,每 60 秒重新构建页面 X)而不是重新构建整个网站。按需 ISR,也称为按需重新验证,可用于通过应用公开的 API 触发重新构建(例如,当 CMS 数据更新时)。

另一方面,Streaming SSR 优化了服务端渲染的单线程瓶颈。普通 SSR 必须在服务器上等待数据将渲染的内容立即发送到客户端,而流式 SSR 允许开发人员将应用分成块,这些块可以逐步从服务器并行发送到客户端。

在过去几年中,SPA/MPA 中的 SSG 和 SSR 渲染模式非常简单。然而,如今更细分的版本正在流行,除了 ISR 和流式 SSR,部分水合(例如 React 服务端组件)允许仅在客户端上水合某些组件,渐进式水合可以对水合顺序进行更细粒度的控制,Island 用于 MPA 中的隔离应用或组件的架构(例如 Astro )以及使用可恢复性而不是水合作用(例如 Qwik)。

JavaScript运行时

2009 年,Ryan Dahl 在一次会议上宣布了 Node.js。最初 Node.js 只是一项将 JavaScript 与浏览器分离并使其在服务器上可用的实验,后来成为 JavaScript 在过去十年中取得成功的最大推动力之一。Ryan Dahl 在没有浏览器的情况下为 Node.js 使用了称为 V8 的 JavaScript 引擎(由 Chrome 实现)。因此,Chrome 浏览器和 Node.js 使用相同的 JavaScript 引擎,但有自己的 JavaScript 运行时(例如浏览器 API 与 Node.js API)来与之交互。

十年后,Ryan Dahl 宣布 Deno 成为 Node 的继任者,并承诺为开发人员提供一个更安全、更快速的环境,其中包括类似浏览器 API、TypeScript 和开箱即用的标准库。 Deno 也运行在 V8 上,不过如今它只是众多 JavaScript 运行时中的一种。

在边缘计算的竞争领域,许多云提供商实现了自己的 JavaScript 运行时(例如 Cloudflare Workers),它针对自己的基础设施(例如 Cloudflare)进行了优化。 因此,Deno 的业务模型也正在成为一个云提供商,拥有 Deno Deploy 和它们的即时边缘渲染 SSR 框架(最初作为概念验证),称为 Deno Fresh。 像 Bun 这样的独立于云提供商的解决方案最近成为最快 JavaScript 运行时竞争中的另一个热门话题。

Monorepos

在过去,monorepos 主要用于大型应用,一个项目在一个版本控制的存储库中包含较小的项目。这些较小的项目中的每一个都可以是从单个应用程序(例如 SPA、MPA)到可重用包(例如函数、组件、服务)的任何东西。合并项目的做法可以追溯到 2000 年初,当时它被称为共享代码库。

如今,monorepos 不再是大型应用的专属,很多小型公司和开源项目也可以从中受益。例如,一家公司可以在 monorepos 中拥有各种包,包括共享 UI 组件、共享设计系统(例如可重用协作设计)以及各自领域的常用实用函数。

这些包可以在各种应用程序中导入:使用所有这些共享包的实际应用(例如 app.mywebsite.com 客户端渲染),考虑 SEO 的主页/产品/登陆页面(例如 mywebsite.com 使用服务端渲染或静态网站生成)仅使用共享设计系统包,以及使用共享 UI 组件和共享设计系统包的技术文档页面(例如 docs.mywebsite.com)。

Turborepo(被 Vercel 收购)再次在 JavaScript/TypeScript 中宣传 monorepo。 Turborepo 允许团队在 monorepo 中为他们所有的应用和包创建构建管道。引人注目的是:在本地机器或跨团队的云中的管道内缓存构建。Turborepo 与 npm/yarn/pnpm 工作区(依赖管理)和变更集(版本控制)等其他重要的 monorepo 工具相结合,使该工具链成为今年值得关注的领域。

实用优先的 CSS

Tailwind CSS 是实用优先 CSS 的典型代表。一方面开发人员讨厌它在 UI 代码中显得冗长,另一方面又喜欢它出色的 DX。作为开发人员,只需在项目中对其进行一次配置,即可立即在 HTML 中使用其预定义的 CSS。

不过,随着最近服务端渲染 (SSR) 的兴起,这种关于实用优先 CSS 的爱与恨的分歧可能会结束。近年来,像 Styled Components (SC) 和 Emotion 这样的 CSS-in-JS 解决方案一直是现代基于组件的 Web 应用样式的主导力量。然而,如果使用 SSR 的主要目标是高性能,那么 CSS-in-JS 就会带来负面影响:增加包大小(SC 为 12.7kB,Emotion 为 7.9kB),更重要的是,在将其插入 DOM 之前,由于 CSS 序列化,运行时开销增加。

因此,我们可能会看到开发人员转向对 SSR 更友好的解决方案,例如将实用优先的 CSS(例如 Tailwind CSS、UnoCSS)与预定义的 UI 组件(例如 DaisyUI)搭配使用。或者使用其他同样流行的替代方案,例如 CSS Module,或称为零运行时/编译时的 CSS-in-JS(例如 vanilla-extract、linaria、astroturf)。

端到端类型安全

从 JavaScript 到 TypeScript 的演变是不可阻挡的。在这场 Web 开发的大迁移中,全栈应用的端到端类型安全无疑是一个重要的趋势。这个概念的实现与通信层 (API) 相辅相成,通信层是将类型化实体(例如:type Usertype BlogPost)从服务端桥接到客户端应用所需的。

在用于客户端-服务端通信的 Web 开发中,通常会使用 REST 和 GraphQL。两者都可以与 OpenAPI for REST 和 GraphQL Code Generator for GraphQL 一起使用,为前端应用生成类型化的模式文件。

有一个名为 tRPC 的类型安全 API 成为后起之秀,它可以作为 REST/GraphQL 的替代品。如果使用在前端和后端共享代码的 TypeScript monorepo,tRPC 可以将所有类型从后端导出到前端应用,而无需任何类型化模式的中间生成。之后,前端只需使用在后台通过 HTTP 连接的类型化函数即可调用后端的 API,以实现客户端-服务端通信。总体趋势肯定会朝着使用更多此类类型安全解决方案的方向发展,用于全栈应用,例如 tRPC、Zod、Prisma 和 TanStack Router,它们都在应用中提供类型安全。

构建工具

在 React 中,create-react-app (CRA) 主导了几年。这在当时是一场革命,因为初学者获得了一个随时可用的 React 入门项目,而无需再使用 React 设置配置自定义 Webpack。 然而,在过去的一年里,Webpack 很快就过时了。

Vite 是构建单页应用 (SPA) 的新秀,它适用于所有流行的框架(例如 React、Vue)来创建入门项目。由 Vue.js 的创建者尤雨溪实现,将 Vite 定位为下一代前端工具。在 Vite 内部,它从 esbuild 获得了强大的功能,与其他 JavaScript 构建工具相比,它是用 Go 编写的,因此打包依赖项的速度比其竞争对手(例如 Webpack)快 10-100 倍。

Vite 的生态系统随着 Vitest(Jest 的替代品)等新增功能而蓬勃发展。但最近出现了新的竞争对手,如 Vercel 推出的 Turbopack。Turbopack 被称为 Webpack的继任者,因为它是由 Webpack 的创始人 Tobias Koppers 主导推出的。Next.js 目前仍然在使用 Webpack,它和 Turbopack 是由同一家公司开发的,所以预计 Next.js 和 Turbopack 可能会在未来成为完美搭配。

AI 驱动的开发

AI 最终会接管开发者的工作吗?这个问题目前还没有答案,但是,AI 驱动的开发在 2022 年成为了现实。随着 GitHub Copilot 的发布,开发人员能够在喜欢的 IDE 中使用 AI 程序。只需编写代码(或写一条注释说明想编写什么代码),GitHub Copilot 就会自动完成实现细节。

但 AI 驱动开发并不止于此:OpenAI 的 ChatGPT 是一种更通用的语言模型,它也可以完成编程任务。许多开发人员已经使用 ChatGPT 作为了 StackOverflow 的替代品。在许多情况下,当用作搜索引擎替代品时,ChatGPT 会提供有用的答案(尽管并不总是完美的)。 因为搜索引擎必须处理大量的 SEO SPAM(不仅与开发相关的内容),ChatGPT 目前被视为可行的替代方案。

其他

除了上面提到的趋势,还有很多值得一提的地方:

  • Tauri 成为 Electron 的替代方案用于由 JavaScript/CSS/HTML 实现的桌面应用程序;
  • Playwright 成为 Cypress 的 E2E (端到端测试)替代方案;
  • Warp 和 Fig 成为下一代终端;
  • CSS 容器查询成为响应式设计的 CSS 媒体查询替代方案;
  • htmx 作为一种丰富的 HTML,用于创建没有 JavaScript 的交互式用户界面。

最后

最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26330.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python绘图教程:将画笔移动到绝对位置的方法

Python绘图教程:将画笔移动到绝对位置的方法 Python作为一门高级编程语言,设计初衷是让编程变得简单、易学、易用,且支持多种编程范式,其中产生了让人惊艳的绘图模块——Turtle(海龟)。 在这篇教程中&…

postgresql 报错 FATAL: no pg_hba.conf entry for host 未配置允许远程连接 解决方法

目录 错误现象 问题原因 解决方案 1、进入到data目录下,找到pg_hba.conf文件 2、修改文件 3、进入到postgres用户下,执行命名 4、连接成功 错误现象 问题原因 这是在远程连接时pg_hba.conf文件没有配置正确。 pg_hba.conf文件在Postgre安装文件目…

探寻生机 | 数说故事助力微播易第七届风向大会,研判新风向,洞察新趋势

“过去一年,有的人用ChatGPT谁出具的北京烤鸭图片最准确搞怪,有的人却已经利用虚拟主播单场带货百万;有的人正在被AIGC淘汰,有的人却通过人机协作实现20秒制作100张创意图;有的百万粉丝接不到广告,有的仅靠…

打磨极致音频体验,声网重磅发布新一代音频技术智能引擎“凤鸣AI引擎”

RTE场景不断丰富,高音质互动需求急需满足,声网凤鸣AI引擎应时而生: 1、一次性解决100种突发性噪声,同时兼顾高保真。 2、利用算法对环境中产生的回声混响进行有效抑制。 3、空间音频通过纯软件算法方案,模拟头部球面区…

ChatGPT最大对手谷歌Bard支持中文了!十级过关,看懂梗图,直接上手免费体验...

编辑:编辑部 【新智元导读】Bard又强了!这次不仅支持中文等40种语言,还能上传图片做问答。 前两天,ChatGPT最强竞品Claude升级了二代,谷歌也不甘落后。 今天,最新版本的Bard来了,可以在提示中添…

审美疲劳来袭,AI 产品该何去何从

ChatGPT 的名声最大,但门槛竖得也很高。没有 ChatGPT ,一堆仿版的国内版 ChatGPT 填补着这一片空白,各种 AI 互动工具也在搞圈地运动。Claude 2 发布了,这个号称 GPT-4 最强对手终于用了直面普通消费者的产品出来,内测…

ChatGPT最强对手Claude,免费还支持中文,怎样使用体验如何?

一款免费且支持中文的类 ChatGPT 产品 Claude,已经正式上线了。网友们对此炒得沸沸扬扬,纷纷表示体验非常舒适。在体验过程中,Claude 的表现十分出色。 Claude 的注册很简单,目前只能通过 Slack 使用,而且暂时免费&…

ChatGPT最强对手Claude如何无门槛使用?

Claude,一个冉冉升起的新星,由 chatgpt 团队出来的员工开发的,由于他们对模型的一些发展理念不同,单独融资创建了 Claude,总体来说表现可圈可点,但整体看可能还不如 chatgpt4.0。 ChatGPT 眼中的 Claude C…

LUNA16_Challange数据预处理2

ps 直接上好像有点困难,那么先整理下LUNA16_Challange中平安科技公司的技术说明中预处理部分(还是比较好理解,理解错误欢迎指正) Data Preprocessing At first, we get the lung area by using traditional methods, and then p…

【数据挖掘竞赛】——糖尿病遗传风险检测挑战赛(科大讯飞)

🤵‍♂️ 个人主页:Lingxw_w的个人主页 ✍🏻作者简介:计算机科学与技术研究生在读 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 &#x1f4a…

【开源】23个优秀的机器学习数据集

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 作者 | Nikola M. Zivkovic 译者 | 王强 策划 | 凌敏 本文最初发布于 rubikscode.com 网站,经原作者授权由 InfoQ 中文站翻译并分享。 Iris 数据集的那些示例…

数据分析也能造假!你得小心这些不为人知的坑

数据分析看似科学理性,但是只要是人参与的工作,就没有不能造假的,尤其是类似数据分析这种工作,很容易产生诡辩论,我们需要实时擦亮眼睛! 作为一个小头目,经常会读到来自各种团队的数据分析报告&…

【数据挖掘实战】——中医证型的关联规则挖掘(Apriori算法)

🤵‍♂️ 个人主页:Lingxw_w的个人主页 ✍🏻作者简介:计算机科学与技术研究生在读 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 &#x1f4a…

数据挖掘--(实验二)关联规则实验

实验一 有趣的频繁项集 案例简介: 有时我们并不想寻找所有频繁项集,而只对包含某个特定元素项 的项集感兴趣。我们会寻找毒蘑菇中的一些公共特征,利用这些特征 就能避免吃到那些有毒的蘑菇。UCI 的机器学习数据集合中有一个关于肋形蘑菇的 23 种特征的数据集,每一…

数据挖掘--糖尿病遗传风险检测

文章目录 赛事背景数据特征介绍数据处理导入数据并查看分析数据数据清洗特征工程 构建模型建立训练数据集和测试数据集构建模型 赛事背景 截至2022年,中国糖尿病患者近1.3亿。中国糖尿病患病原因受生活方式、老龄化、城市化、家族遗传等多种因素影响。同时&#xff…

【数据分析】业务分析之ABtest

A/B测试 AB测试是为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组(目标人群)随机的访问这些版本&a…

生物信息学竞赛:糖尿病数据挖掘

糖尿病数据挖掘 一理:机器学习量化分析糖尿病致病因子下载:临床数据线性回归预测糖尿病LightGBM 预测糖尿病糖尿病因子分析变量相关性分析 一文:当前科学理解慢病之王的解决方案是什么怎么治疗怎么预防 一理:机器学习量化分析糖尿…

VS Code插件之Debugger for Chrome

号称2018最火的编辑器,不用用怎么行? 不多说直接开始踩坑之路。 要在vs中启动chrome控制台怎么办?vscode并没有集成环境,这里我们需要借助一个插件Debugger for Chrome。 选择左边安装包选项,点击商店搜索Debugger for…

Vscode对C/C++可视化的代码跟踪调试

文章目录 可视化的代码跟踪调试1、安装Visual Studio Code2、用vscode编译调试C\C 总结 可视化的代码跟踪调试 ubantu18.04的环境下,在命令行工具gdb调试基础上,利用可视化调试前端软件Visual Studio Code,(后端依然依赖gcc、gdb…

VS Code真机测试步骤

VS Code真机测试步骤 前提:你的电脑跟你的手机是在同一个网络环境下。电脑连手机热点; 1. 在扩展里搜索live server,下载安装; 2. 打开cmd 命令窗口(快捷键是winr); 输入…