2024年如何开始一个React项目

原文:How to start a React Project in 2024

每一年我都会简单介绍一下如何创建一个新的React项目,然后反思他们有什么优缺点。我想反思一下优缺点,作为开发者需要具备的技能水平,以及每个入门项目为React开发者提供了哪些功能。最后,您将了解三种不同的解决方案,以满足不同的需求。

注意:这些截图来自去年的JavaScript状态,因为最新的结果还没有上线。

REACT WITH VITE

Vite是React最受欢迎的(现已弃用的)入门工具create-react-app(CRA)的明确继任者,因为它与CRA没有太大区别。与CRA(使用Webpack)相比,它要快得多,因为它是基于esbuild。

Vite倾向于创建一个单页应用程序(SPA),使用客户端路由/渲染而不是服务器端渲染(SSR)。然而,由于SSR在当今变得越来越重要,它作为Vite的可选功能提供。

如果原来的项目基于create-react-app(CRA),迁移到Vite是一个简单的过程。通过Vite的vite.config.js文件,以及特定于功能的文件(例如tsconfig),只需进行几项配置即可启用TypeScript、SVG和SSR等可选功能。

Vite与React结合使用,允许开发人员在不使用带有偏见的(opinionated)框架的情况下使用React。由开发人员选择互补的React库来处理路由、数据获取、状态管理和测试。与所有React框架相比,它不会在项目级别强制您使用特定的React功能、库或配置。

继续阅读:React Libraries for 2024

最后但同样重要的是,Vite鼓励初学者学习React及其基础知识,而不会受到框架的干扰。当我于2022年更新我的书《The Road to React》时,我使用Vite替换了create-react-app。虽然Vite扮演了辅助的角色,但初学者可以专注于React及其核心功能。

相反,在框架环境中学习React时,React几乎扮演了辅助的角色,而人们必须遵循框架的意见(例如基于文件的路由)。

React和Vite一起使用的优势:

  • 几乎可以替代create-react-app(CRA)
  • 仍然是SPA/CSR友好型,但SSR是可选的
  • 没有框架/公司锁定
  • 轻量级
  • 在功能级别上不会与React混淆
    • 因此,专注于React本身而不是框架
  • 了解React基础知识的学习曲线较为平缓
  • Vite被用于许多超越React的框架中

React和Vite一起使用的缺点:

  • 优先考虑SPA/CSR
  • 没有框架支持
  • 对集成框架中提供的React架构功能访问有限
    • 例如,React Server Components(RSC)

REACT WITH NEXT

Next.js作为一个框架,是最成熟的选择,因此当React开发人员希望在带有偏见的框架环境中使用React时,它是优先的选择。它附带了许多内置功能。但是,如果您不喜欢Next.js,可以尝试Remix。

Next.js优先考虑服务器端渲染(SSR)作为渲染技术。但是,它也可以与静态站点生成(SSG)和客户端渲染(CSR,请参见Vite中的React)一起使用。此外,还有几种更前沿的渲染技术,例如增量静态再生(ISR)和React Server Components(RSC)。

更令人震惊的是:您可以在Next.js应用程序中混合和匹配渲染技术。虽然营销页面可以使用SSG,但实际的应用程序在登录/注册后面使用SSR。

继续阅读:Guide to Web Applications (SSG, SSR, CSR, SPAs)

但是,这种强大的功能也带来了成本:不同的渲染技术会产生工程开销,框架不断的更新渲染技术,而并非所有日常技术工作者都能跟上这种速度。

总之,虽然Next.js附带了许多内置功能(例如基于文件的路由),但它也带来了技术债务。虽然React本身(例如与Vite一起使用)相对稳定,但您肯定会在Next.js生态系统中看到变化,因为它们正在前沿工作,将React带到服务器上。

Next.js的优势:

  • 带有内置库的带有偏见的框架
  • SSR和其他许多渲染技术
    • 性能提升(注意:如果做得正确)
    • 与CSR(请参见Vite中的React)相比,SEO得到改善
  • Vercel作为大客户,拥有大量资金
    • 与React核心团队紧密合作
    • 过去曾聘请过几位React核心团队成员
  • 走在技术的前沿

Next.js的缺点:

  • 技术太新
  • 与仅使用Vite的React相比,开销/稳定性/可维护性不如前者
  • 与仅使用Vite的React相比,学习曲线更陡峭
    • 更侧重于框架特定内容,而不是React本身
  • 框架(和基础设施,例如在Vercel上部署)锁定
    • 后者也许可以通过OpenNext解决

REACT WITH ASTRO

Astro允许开发人员创建以内容为中心的网站。由于其岛屿架构(island architecture)和因此的选择性水合作用,它为每个网站提供了默认的快速性能。因此,SEO相关的网站从使用Astro中获益。

从实施的角度来看,它更倾向于多页应用程序(MPAs)而不是单页应用程序(SPAs)。因此,它让历史重演了:从MPAs是网站的主要类型(2010年之前)到SPAs接管(2010-2020年)再到回到MPAs(从而使MPAs成为第一目标)。

Astro是一个框架(此处:React)无关的解决方案。因此,您可以使用Astro的内置组件语法或选择一个框架(例如React)。框架仅用于服务器端渲染,不会暴露给客户端。只有当一个人决定将交互式岛屿(请参见岛屿架构)水合到客户端时,它才会将所有必要的JavaScript代码发送到浏览器。

总之,尽管Next(无论是SSR/SSG/ISR)也适合内容聚焦的网站,但Astro似乎更适合内容聚焦网站的更具体要求(性能、SEO、内容作为一等公民(例如,合辑、MDX))。

React 和 Astro 的优势:

  • 内容聚焦网站
  • 性能
  • SEO
  • 框架(例如React)无关

React 和 Astro 的缺点:

  • 不适合动态Web应用程序的广告
    • 但他们正在深入探索这个领域

启动React项目的更多选项

TypeScript/JavaScript SSR框架,不使用React

  • Nuxt (Vue)
  • SvelteKit (Svelte)
  • SolidStart (Solid)
  • QwikCity (Qwik)

如何开始一个React项目?

  • 如果您刚开始学习React(从教育者的角度来看),请坚持使用Vite与React,因为它尽可能地接近React的基础知识。如果您只寻找轻量级的SPA/CSR解决方案,情况也是如此。
  • 如果您正在寻找基于React的带有多种渲染技术(和基础设施)的带有偏见的框架,我建议使用Next与React 作为最成熟的解决方案,具有所有优缺点。
    • 如果Next.js不适合您的需求,但您仍在寻找一个包含所有电池的SSR框架,请考虑Remix与React
  • 如果您想要一个内容聚焦的网站,请考虑Astro与React

以上内容基于 DeepSeek-LLM-67B-chat 翻译生成,并对部分翻译内容进行人工校正。

相关推荐
青锐CC1 小时前
webman使用中间件验证指定的控制器及方法[青锐CC]
中间件·前端框架·php
qbbmnnnnnn3 小时前
【vue2.0入门】vue基本语法
前端·vue.js·前端框架
ClareXi3 小时前
react项目通过http调用后端springboot服务最简单示例
spring boot·react.js·http
Dreams°12314 小时前
【ECMAScript标准规范】
前端·vscode·前端框架·ecmascript
咔咔库奇15 小时前
react动态路由
前端·react.js·前端框架
yqcoder16 小时前
react 中 FC 模块作用
前端·react.js·前端框架
刘志辉17 小时前
react的创建与书写
前端·react.js·前端框架
会发光的猪。18 小时前
vue3中ElementPlus引入下载icon图标不显示透明问题解决教程方法
javascript·vue.js·elementui·前端框架
奔跑草-19 小时前
【前端】深入浅出的React.js详解
前端·react.js·前端框架
小牛itbull20 小时前
ReactPress:深入解析技术方案设计与源码
javascript·react.js·reactpress