React闲聊

141 阅读8分钟

一、什么是 React?

React 是由 Facebook 开发并开源的一个用于构建用户界面的 JavaScript 库。它采用组件化声明式的编程范式,让开发者能够高效地创建交互式 UI。

核心特点:

  • 虚拟 DOM:通过内存中的轻量级 DOM 表示提高性能
  • 单向数据流:数据自上而下传递,保持可预测性
  • JSX 语法:JavaScript 的语法扩展,允许在 JS 中写 HTML
  • 生态丰富:拥有庞大的社区和生态系统

React 不是框架而是库,专注于视图层的解决方案,可以轻松与其他库或框架配合使用。

学习传送门1:快速入门 – React

学习传送门2:React 入门 - 学习 Web 开发 | MDN

二、React 和 Vue 区别与选择

主要区别如图

特性ReactVue
设计理念函数式编程倾向渐进式框架
学习曲线较陡峭较平缓
模板语法JSX模板语法
状态管理需要第三方库内置 Vuex
数据绑定单向双向
核心团队Facebook尤雨溪和团队
  • 设计理念不同

react其设计理念是组件化开发。React主张使用JavaScript来处理更多的事情,推崇函数式编程,强调单向数据流, 设计模式是MVC模式,注重与MVC里面的V,也就是view层。react应用中数据对象是不可变的,需要使用setState方法更新状态;

而vue的话,设计理念是一个MVVM,用户只需要注重与M层的一个变化就可以了。因为vue底层就会帮我进行一个页面的更 新,页面的更新也会改动数据。

  • Diff算法的区别

React:React的diff算法称为Reconciliation,它通过比较虚拟DOM树来找出需要更新的部分。React的diff算法主要优化了树的遍 历,采用双端比较策略,提高了diff效率。

Vue:Vue的diff算法也借鉴了React的双端比较策略,但在此基础上进行了优化。Vue的diff算法在比较过程中会跳过静态节点,从而 提高渲染性能。

  • 语法不同

React使用JSX语法,将HTML结构嵌入到JavaScript代码中,使得组件的结构和逻辑更加紧密。JSX需要通过Babel等工具转换成浏览器可识别的JS代码。

Vue:Vue使用模板语法,将HTML、CSS和JavaScript分离,更符合传统前端开发者的习惯。Vue的模板语法简洁明了,易于理解

为什么选择 React?

  1. 灵活性:不强制特定项目结构
  2. 性能:虚拟 DOM 和 Fiber 架构优化
  3. 生态强大:丰富的第三方库支持
  4. 跨平台:React Native 支持移动开发
  5. 就业市场:大厂广泛采用,岗位需求多

其实两没必要打的难舍难分,适配才是最好的,小项目用vue,大项目用react。

高手可以看看这个帖子去发表下高见(10 封私信 / 80 条消息) 写半个月react了,感觉还是vue好用。有没有大佬能说一下react好在哪里? - 知乎

三、组件与组件化思想

什么是组件?

组件是 React 应用的最小功能单元,它将 UI 拆分为独立、可复用的代码片段。每个组件包含:

  • 结构(HTML/JSX)
  • 样式(CSS)
  • 行为(JavaScript)

组件化思想的优势

  1. 复用性:一次编写,多处使用
  2. 可维护性:隔离的组件更易调试
  3. 协作开发:团队可以并行开发不同组件
  4. 测试友好:独立组件便于单元测试
  5. 渐进式开发:可以逐步替换旧组件

组件示例

function Button({ text, onClick }) {
  return (
    <button className="primary-btn" onClick={onClick}>
      {text}
    </button>
  );
}

四、WebApp与Vite

WebApp 概念

Web 应用(WebApp)是运行在浏览器中的应用程序,特点:

  • 优点

    • 跨平台(任何设备有浏览器即可)
    • 无需安装
    • 即时更新
    • 开发成本低
  • 缺点

    • 性能低于原生应用
    • 功能受限(某些设备 API 无法访问)
    • 离线能力有限
    • 搜索引擎优化挑战

Vite 是什么?

Vite 是一款现代化的前端构建工具,由 Vue.js 创始人尤雨溪开发,专注于极速的开发体验。

Vite 如何解决 WebApp 的痛点?

WebApp 的缺点Vite 的解决方案
启动慢(传统打包工具)✅ 原生 ESM,按需编译,冷启动极快
热更新慢✅ 毫秒级 HMR,不丢失状态
生产构建慢✅ esbuild + Rollup,打包速度极快
开发配置复杂✅ 零配置,支持 React/Vue/Svelte 等
SEO 不友好✅ 支持 SSR(服务端渲染)  优化 SEO

五、React + Vite 开发优劣势

优势组合

  1. 开发体验:Vite 的快速启动和 HMR 提升 React 开发效率
  2. 构建速度:比 Webpack 快 10-100 倍
  3. 现代特性:原生支持 ES 模块、TypeScript 等
  4. 轻量级:配置简单,开箱即用
  5. 生态兼容:支持大多数 React 生态工具

潜在不足

  1. 插件生态:相比 Webpack 还不够成熟
  2. 旧浏览器:对 IE11 等老浏览器支持有限
  3. 大型项目:超大型项目可能遇到未知问题
  4. SSR 支持:需要额外配置

六、包管理器和运行时比较

以下是 包管理器 (npm、Yarn、pnpm、bun) 和 运行时 (Node.js、Deno、Bun) 的详细对比:


1. 包管理器比较 (npm vs. Yarn vs. pnpm vs. bun)

特性npmYarnpnpmbun
开发公司Node.js 官方Facebook (现社区维护)独立开源Jarred Sumner (Oven.sh)
安装方式npm installyarn addpnpm addbun install
依赖存储嵌套 node_modules扁平化 node_modules硬链接 + 符号链接全局缓存 + 硬链接
安装速度⚡ 中等⚡⚡ 快⚡⚡⚡ 更快⚡⚡⚡⚡ 极快
磁盘占用高(重复依赖)中等极低(共享依赖)极低(共享依赖)
锁定文件package-lock.jsonyarn.lockpnpm-lock.yamlbun.lockb (二进制)
Monorepo 支持有限(需工具)workspacesworkspaces内置 Monorepo 支持
离线模式✅ (部分)✅ (较好)✅ (优秀)✅ (优秀)
兼容性100% Node.js兼容 npm/Yarn/pnpm
安全性一般较好严格隔离依赖沙盒化安装

包管理器推荐选择

  • 最快安装 & 最小磁盘占用bunpnpm
  • 兼容性 & 稳定性npmYarn
  • Monorepo 项目pnpmbun
  • 安全性要求高pnpm(依赖隔离)或 bun(沙盒化)

2. 运行时比较 (Node.js vs. Deno vs. Bun)

特性Node.jsDenoBun
开发公司Node.js 基金会Ryan Dahl (Node 创始人)Jarred Sumner (Oven.sh)
引擎V8 (Chrome)V8 (Chrome)JavaScriptCore (Safari)
启动速度⚡ 中等⚡⚡ 快⚡⚡⚡ 极快
HTTP 性能最高 (比 Node 快 3x)
TypeScript 支持❌ (需 ts-node)原生支持原生支持
Web API 兼容❌ (需 fetch polyfill)完整支持完整支持
权限控制❌ (完全访问)沙盒化权限沙盒化权限
包管理npmURL/ESM 导入内置 bun install
兼容性100% JS 生态部分 Node.js API高度兼容 Node.js

运行时推荐选择

  • 最稳定 & 生态最全Node.js
  • 现代 API & 安全性Deno
  • 最快执行 & 一体化工具Bun
  • 全栈开发 (前端 + 后端)Bun(内置打包、测试、运行)

3. 综合对比结论

场景推荐组合
传统后端服务Node.js + npm/pnpm
高性能 APIBun (最快 HTTP 吞吐)
安全敏感应用Deno (默认沙盒权限)
全栈开发Bun (安装 + 运行 + 打包一体化)
Monorepo 项目pnpm + Node.js/Bun

趋势

  • Bun 正在快速增长,可能成为未来的默认选择(如替代 Node.js + npm)。
  • Deno 适合需要严格安全的场景(如边缘函数)。
  • Node.js 仍然是目前最稳定的生产环境选择。

如果你想要 最快的开发体验,推荐尝试 Bun(包管理 + 运行时一体化)。

在某些性能方面,bundeno打的有来有回,但bun还有包管理器功能,不得不说bun还是太夸张了,它一开始就是奔着完全取代node去的,野心很大,可以拭目以待。 有兴趣的可以看看这篇文章:2024 年,你应该使用 Bun、Node.js 还是 Deno? - 知乎

七、Next.js 解析

一句话介绍Next.js

Next.js 是基于 React 的全栈框架,提供开箱即用的 SSR/SSG 支持、API 路由和零配置优化,让开发者轻松构建生产级 React 应用。

为什么需要 Next.js?

React 的 CSR 存在 SEO 和首屏性能问题,Next.js 提供了:

  • 服务端渲染:更好的 SEO 和性能
  • 文件路由:基于文件系统的路由
  • API 路由:内置后端 API 支持
  • 图像优化:自动图片优化
  • 国际化:内置 i18n 支持

核心特性

  1. 预渲染

    • SSG:构建时生成静态 HTML
    • SSR:每次请求时生成 HTML
    • ISR:静态页面增量更新
  2. 数据获取方法

    export async function getStaticProps() {} // SSG
    export async function getServerSideProps() {} // SSR
    
  3. API 路由

    // pages/api/user.js
    export default function handler(req, res) {
      res.status(200).json({ name: 'John Doe' })
    }
    

Next.js 适用场景

  1. 内容型网站:博客、新闻站(SEO 重要)
  2. 电商平台:需要快速首屏
  3. 仪表盘:需要服务端数据处理
  4. 全栈应用:前后端一体化开发

想进一步了解可点击传送门:Next.js了解篇|一文带你梳理清楚Next.js的功能如果你用过 React 或者想尝试 React,那么建议你使用 - 掘金

八、结语

无论选择学习哪种技术,理解核心概念(组件化、状态管理、渲染模式)才是成为优秀 React 开发者的关键。建议从基础 React 开始,逐步探索更高级的框架和模式。

记住,React 学习是一个循序渐进的过程。建议从简单的组件开始,逐步构建完整的应用。遇到问题时,React 丰富的社区资源和文档总能给你帮助。

小贴士:每天花30分钟阅读 React 官方博客,保持对最新特性的了解。

祝你 React 开发之旅愉快! 🚀