目 录CONTENT

文章目录

React(一)环境搭建与架构详解

React 基础版(一)环境搭建

目录


1. React 安装环境前置要求

1.1 操作系统兼容性要求

React 本身是一个跨平台的 JavaScript 库,其核心运行时不依赖于特定操作系统。主流开发环境均支持 React 项目开发:

操作系统 兼容性说明
Windows 10/11 完全兼容,推荐使用 PowerShell 或 Windows Terminal
macOS 10.15+ 完全兼容,前端开发主流选择
Linux(Ubuntu/Debian/CentOS) 完全兼容,服务器端渲染与 CI/CD 常用

注意:React 项目的构建产物为静态资源(HTML/JS/CSS),只要目标浏览器满足运行条件即可,部署环境无特殊限制。

1.2 Node.js 最低版本要求及版本选择建议

React 18 官方推荐 Node.js 版本为 14.0.0 及以上。使用 Vite 作为构建工具时,建议环境满足以下要求:

  • 最低版本:Node.js >= 14.18.0(Vite 4 的硬性要求)
  • 推荐版本:Node.js 18.x LTS20.x LTS
  • 原因:长期支持版本(LTS)提供稳定的补丁更新,且 Vite 5/6 对 Node.js 18+ 有更好支持

可通过以下命令检查当前 Node.js 版本:

node -v

1.3 包管理工具版本要求

React 项目支持 npm、yarn、pnpm 等包管理工具,推荐版本如下:

工具 推荐版本 说明
npm >= 7.x 默认集成于 Node.js,支持 workspaces
yarn >= 1.22.xyarn berry (3.x/4.x) 大厂项目常用,支持 Plug'n'Play
pnpm >= 7.x 磁盘占用低、安装速度快,支持 monorepo

检查命令:

npm -v
yarn -v
pnpm -v

1.4 浏览器兼容性要求

React 18 支持的现代浏览器范围如下:

  • Chrome / Edge:最新版及最近两个大版本
  • Firefox:最新版及最近两个大版本
  • Safari:14.1+
  • Chrome Android / Safari iOS:最新版

对于 IE 浏览器,React 18 已正式放弃对 Internet Explorer 的支持。若项目必须兼容旧版浏览器,需额外引入 core-js 等 polyfill,并考虑降级至 React 17。

1.5 开发工具与 VS Code 推荐插件

推荐使用 Visual Studio Code 作为 React 项目的主要开发工具,以下为建议安装的插件:

插件名称 作用
ES7+ React/Redux/React-Native snippets 提供 React 代码片段,提升开发效率
Prettier - Code: formatter 统一代码格式化风格
ESLint 实时检测代码规范问题
Auto Rename Tag 成对修改 HTML/JSX 标签
Bracket Pair Colorization 彩色括号匹配,提升可读性
Path Intellisense 路径自动补全,配合别名使用更佳
GitLens 增强 Git 代码追溯能力
Tailwind CSS IntelliSense 若使用 Tailwind,提供类名提示

2. 通过 Vite 搭建 React 项目

2.1 全局环境检查

在创建项目前,应确认本地环境已安装 Node.js 与包管理工具:

node -v      # 输出示例:v18.20.0
npm -v       # 输出示例:10.2.3

若版本过低,建议访问 Node.js 官网(https://nodejs.org)下载 LTS 版本进行安装。

2.2 创建项目的命令行操作

Vite 提供了官方的项目脚手架工具,支持通过 npm、yarn 或 pnpm 创建 React 项目。以下以 npm 为例:

npm create vite@latest my-react-app -- --template react

参数说明:

  • my-react-app:项目名称,创建后生成同名目录
  • --template react:指定使用 React 模板

Vite 也支持交互式创建:

npm create vite@latest

执行后按提示选择:

  1. Project name:输入项目名称
  2. Select a framework:选择 React
  3. Select a variant:选择 JavaScriptTypeScript

2.3 依赖安装步骤

进入项目目录并安装依赖:

cd my-react-app
npm install

安装完成后,项目根目录将生成 node_modules 文件夹,并存有项目所需的全部依赖包。

2.4 本地开发服务启动流程

执行以下命令启动本地开发服务器:

npm run dev

启动成功后,终端会显示类似如下信息:

  VITE v5.0.0  ready in 320 ms

  ➜  Local:   http://localhost:5173/
  ➜  Network: use --host to expose
  ➜  press h + enter to show help

打开浏览器访问 http://localhost:5173/ 即可查看默认页面。

2.5 项目创建后的初始验证步骤

  1. 访问页面,确认默认 React + Vite 页面正常渲染;
  2. 修改 src/App.jsx 中的内容,观察浏览器是否热更新(HMR);
  3. 检查 src/main.jsx 是否正确调用 ReactDOM.createRoot
  4. 执行 npm run build 测试生产构建是否成功;
  5. 检查 dist 目录是否生成构建产物。

3. React 项目目录结构详解

使用 Vite 创建 React 项目后,默认目录结构如下:

my-react-app/
├── node_modules/          # 项目依赖包
├── public/                # 静态资源目录
├── src/                   # 源码目录
│   ├── assets/            # 项目资源(图片、字体、样式等)
│   ├── App.css            # 根组件样式
│   ├── App.jsx            # 根组件
│   ├── index.css          # 全局样式
│   └── main.jsx           # 应用入口文件
├── .eslintrc.cjs          # ESLint 配置
├── .gitignore             # Git 忽略规则
├── index.html             # 应用入口 HTML
├── package.json           # 项目元数据与依赖
├── package-lock.json      # npm 依赖锁定文件
├── README.md              # 项目说明文档
└── vite.config.js         # Vite 构建配置

3.1 文件夹详解

node_modules/

  • 作用:存放项目通过 npm install 下载的所有依赖包及其子依赖。
  • 文件类型:第三方 JavaScript 库、二进制文件、类型声明文件等。
  • 使用场景:运行项目、打包构建时由 Node.js 加载模块。
  • 注意事项:该目录通常不应提交到代码仓库,需通过 package.jsonpackage-lock.json 重新生成。

public/

  • 作用:存放不需要经过构建工具处理的静态资源。
  • 文件类型:图片、字体、JSON 数据、全局脚本、robots.txt 等。
  • 使用场景:通过绝对路径直接引用,如 /logo.png
  • 特点:public 目录下的文件会原样复制到构建输出目录(dist)。

src/

  • 作用:项目核心源代码目录,React 组件、业务逻辑、样式等均存放于此。
  • 常用子目录划分规范
子目录 作用 存放文件类型
components/ 通用/可复用组件 .jsx / .tsx / .css / .module.css
pages/ 页面级组件 .jsx / .tsx
hooks/ 自定义 React Hooks .js / .ts
utils/ 工具函数 .js / .ts
services/ API 请求封装 .js / .ts
store/ 状态管理(Redux/Zustand) .js / .ts
router/ 路由配置 .js / .ts
assets/ 项目资源(图片、样式、字体) .png / .jpg / .css / .scss
types/ TypeScript 类型定义 .d.ts / .ts
styles/ 全局样式、变量、主题 .css / .scss / .less

3.2 核心配置文件详解

vite.config.js

  • 作用:Vite 构建工具的核心配置文件,用于定义别名、代理、插件、构建输出等。
  • 核心使用场景:配置路径别名、开发服务器代理、React 插件、构建优化等。

index.html

  • 作用:整个单页应用(SPA)的入口 HTML 文件。
  • 核心使用场景:引入根挂载点(<div id="root"></div>),加载 src/main.jsx

.gitignore

  • 作用:定义 Git 版本控制应忽略的文件与目录。
  • 常见内容node_modules/.env.DS_Storedist/ 等。

.vscode/

  • 作用:存放 VS Code 工作区配置,便于团队统一开发环境。
  • 常见文件settings.json(编辑器配置)、extensions.json(推荐插件)、launch.json(调试配置)。

4. package.json 核心字段详解

package.json 是 Node.js 项目的配置文件,记录了项目元数据、依赖与脚本命令。以下是 React + Vite 项目中常见字段的详细说明:

字段 定义与作用 配置规则与示例
name 项目名称,用于包的唯一标识 小写、短横线连接,如 "my-react-app"
version 项目版本号,遵循语义化版本规范 "1.0.0",格式为 MAJOR.MINOR.PATCH
private 标记项目是否为私有包,防止误发布到 npm 布尔值,如 true
type 指定模块类型,module 表示使用 ES Modules "module",Vite 项目通常为 ESM
scripts 定义可执行的 npm 命令 "dev""build""preview"
dependencies 项目运行时必需的依赖 reactreact-dom
devDependencies 开发环境依赖,不参与生产运行 viteeslint@vitejs/plugin-react
description 项目描述信息 "A React project scaffolded by Vite"
keywords 项目关键词,便于 npm 搜索 ["react", "vite"]
author 项目作者信息 "John Doe <john@example.com>
license 项目开源协议 "MIT"
main 指定包的入口文件(CommonJS) "dist/index.cjs"
module 指定 ES Module 入口文件 "dist/index.esm.js"
exports 精确控制包的导出路径与条件 {".": {"import": "./dist/index.js", "require": "./dist/index.cjs"}}
browserslist 定义目标浏览器范围,用于 Babel/PostCSS 等工具转译 ["> 1%", "last 2 versions", "not dead"]

4.1 scripts 字段详解

Vite 项目默认的 scripts 配置如下:

"scripts": {
  "dev": "vite",
  "build": "vite build",
  "preview": "vite preview",
  "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0"
}
  • dev:启动本地开发服务器,默认端口 5173
  • build:执行生产环境构建,输出到 dist 目录
  • preview:预览生产构建结果
  • lint:运行 ESLint 检查代码规范

5. npm 语义化版本号与版本限定符

5.1 版本号结构

语义化版本(Semantic Versioning,SemVer)格式为:MAJOR.MINOR.PATCH

位置 名称 含义
第一个数字 主版本号(Major) 不兼容的 API 修改
第二个数字 次版本号(Minor) 向下兼容的功能新增
第三个数字 修订号(Patch) 向下兼容的问题修复

示例:react@18.2.0 表示主版本 18,次版本 2,修订版本 0。

5.2 版本限定符规则

符号 规则说明 示例
^ 插入符号,允许更新至当前主版本下的最新版本,但不跨主版本 ^18.2.0>= 18.2.0 && < 19.0.0
~ 波浪号,允许更新至当前次版本下的最新版本,但不跨次版本 ~18.2.0>= 18.2.0 && < 18.3.0
> 严格大于指定版本 >18.0.0
>= 大于或等于指定版本 >=18.0.0
< 严格小于指定版本 <19.0.0
<= 小于或等于指定版本 <=18.2.0
= 精确等于指定版本(可省略) =18.2.018.2.0
- 指定版本范围 1.0.0 - 2.0.0
|| 逻辑或,满足任一版本范围即可 ^16.0.0 || ^18.0.0

5.3 特殊版本标识

标识 作用
无前缀 精确版本,如 18.2.0,安装时固定该版本
latest 安装该包的最新稳定版本,不推荐用于生产项目
next 安装预发布或测试版本,通常用于尝鲜新功能
* 安装任意版本,风险较高,不推荐

5.4 不同前缀在依赖安装时的版本拉取差异

假设 package.json 中声明 react: "^18.2.0"

  • 当 React 最新版本为 18.3.1 时,npm 会安装 18.3.1
  • 当 React 最新版本为 19.0.0 时,npm 不会安装 19.0.0,因为主版本变化会破坏兼容性;

若声明为 react: "~18.2.0",则即使存在 18.3.0,也不会安装,仅允许 18.2.x 版本。


6. package-lock.json 详解

6.1 生成逻辑

package-lock.json 由 npm 在执行 npm install 时自动生成。它精确记录了当前 node_modules 目录中所有依赖包的版本、下载地址与依赖关系。

6.2 核心作用

  1. 依赖版本锁定:确保团队成员、CI/CD 环境与生产环境安装完全一致的依赖版本;
  2. 安装速度优化:npm 可直接读取锁定文件中的解析结果,减少版本计算时间;
  3. 依赖树结构固化:完整记录直接依赖与间接依赖的层级关系,避免依赖解析差异;
  4. 安全性与可复现性:保证项目在不同时间、不同机器上的构建结果一致。

6.3 文件内部核心字段含义

字段 含义
name 项目名称
version 项目版本号
lockfileVersion 锁定文件格式版本,npm 7+ 为 2 或 3
packages 以扁平结构记录所有依赖包信息
dependencies 记录依赖树结构(旧版字段)
resolved 依赖包的下载地址(如 npm registry 链接)
integrity 依赖包的哈希校验值,确保文件完整性
dev 标记是否为开发依赖
requires 声明该包依赖的其他包

6.4 与 package.json 的版本关联规则

  • package.json 描述的是“希望安装的版本范围”;
  • package-lock.json 描述的是“实际安装的精确版本”;
  • package-lock.json 存在时,npm 优先遵循锁定文件安装依赖;
  • 使用 npm install <package> 会更新 package.jsonpackage-lock.json
  • 使用 npm ci 会严格依据 package-lock.json 安装,不更新范围。

6.5 提交到代码仓库的必要性

强烈建议将 package-lock.json 提交到代码仓库。原因包括:

  • 保证团队开发环境依赖一致;
  • CI/CD 流水线可通过 npm ci 实现可复现安装;
  • 避免不同成员安装到不同版本的依赖导致构建结果不一致;
  • 提升 npm install 的解析速度。

6.6 与 yarn.lock、pnpm-lock.yaml 的核心差异

特性 package-lock.json yarn.lock pnpm-lock.yaml
所属工具 npm yarn pnpm
格式 JSON YAML 风格 YAML
文件结构 扁平化 packages 依赖项列表 内容寻址存储 + 依赖图
安装策略 嵌套/扁平 嵌套/扁平 全局内容寻址 + 硬链接
磁盘占用 较大 较大 较小
依赖解析 精确锁定版本 精确锁定版本 精确锁定版本

7. Vite 多路径别名配置

在 React 项目中,使用路径别名可以避免大量 ../../../ 形式的相对路径,提升代码可读性与维护性。本章节将配置以下别名:

别名 指向目录
@ src/
@components src/components/
~img src/assets/images/
#types src/types/

7.1 在 vite.config.js 中配置路径别名

首先,在 vite.config.js 中引入 path 模块,并在 resolve.alias 中配置别名:

import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import path from "path";

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "./src"),
      "@components": path.resolve(__dirname, "./src/components"),
      "~img": path.resolve(__dirname, "./src/assets/images"),
      "#types": path.resolve(__dirname, "./src/types"),
    },
  },
});

注意:在 ESM 项目中,__dirname 需要额外处理。若出现未定义错误,可使用以下方式兼容:

import { fileURLToPath } from "url";

const __dirname = path.dirname(fileURLToPath(import.meta.url));

7.2 配置 VS Code 路径提示

为了让 VS Code 在输入别名时提供自动补全与路径提示,需要在项目根目录创建 jsconfig.json(JavaScript 项目)或 tsconfig.json(TypeScript 项目)。

JavaScript 项目:jsconfig.json

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"],
      "@components/*": ["src/components/*"],
      "~img/*": ["src/assets/images/*"],
      "#types/*": ["src/types/*"]
    }
  },
  "include": ["src"]
}

TypeScript 项目:tsconfig.json

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"],
      "@components/*": ["src/components/*"],
      "~img/*": ["src/assets/images/*"],
      "#types/*": ["src/types/*"]
    }
  },
  "include": ["src"]
}

配置完成后,建议重启 VS Code 以使路径提示生效。

7.3 别名在项目代码中的使用示例

引用组件

import Header from "@components/Header";
import Button from "@components/Button";

function App() {
  return (
    <div>
      <Header />
      <Button>点击我</Button>
    </div>
  );
}

export default App;

引用图片资源

import logo from "~img/logo.png";

function App() {
  return (
    <div>
      <img src={logo} alt="Logo" />
    </div>
  );
}

export default App;

引用类型定义(TypeScript 项目)

import type { UserInfo } from "#types/user";

const user: UserInfo = {
  id: 1,
  name: "张三",
};

引用通用工具函数

import { formatDate } from "@/utils/date";

const dateStr = formatDate(new Date());

7.4 验证别名是否生效

  1. 启动开发服务器:npm run dev
  2. 打开浏览器访问页面,确认无模块解析错误;
  3. 在 VS Code 中输入别名,检查是否有路径自动补全提示;
  4. 执行 npm run build 测试生产构建是否成功。

总结

本文档系统梳理了 React 项目从环境准备、项目创建、目录结构、package.json 字段、版本号规则、package-lock.json 到 Vite 路径别名配置的完整知识体系。掌握上述内容后,开发者可以独立完成 React + Vite 项目的搭建与基础配置,并为后续组件开发、状态管理、路由配置等进阶学习奠定坚实基础。

0
博主关闭了当前页面的评论