React 项目初始化与搭建指南

React 项目初始化有多种方式,可以选择已有的脚手架工具快速创建项目,也可以自定义项目结构并使用构建工具实现项目的构建打包流程。

1. 脚手架方案

1.1. Vite

通过 Vite 创建 React 项目非常简单,只需一行命令即可完成。Vite 的工程初始化脚手架会自动处理所有创建工作。

javascript 复制代码
pnpm create vite my-app --template react-ts

1.2. create-react-app

create-react-app 是 React 官方提供的基于 webpack 的脚手架工具,其核心逻辑封装在 react-scripts 包中。它简化了 React 项目的初始化过程,开发者只需执行一行命令:

javascript 复制代码
npx create-react-app my-app --template typescript

2. 自搭建方案

除了使用脚手架外,我们还可以根据业务需求自定义搭建 React 工程。下面分别介绍基于 Webpack 和 Vite 的搭建流程。

2.1. Webpack 方案

  1. 创建项目目录并初始化
javascript 复制代码
mkdir my-react-app
cd my-react-app
npm init -y
  1. 安装依赖
javascript 复制代码
npm install react react-dom
npm install --save-dev webpack webpack-cli webpack-dev-server 
npm install babel-loader @babel/core @babel/preset-env @babel/preset-react 
npm install html-webpack-plugin css-loader style-loader
  1. 创建项目结构
javascript 复制代码
my-react-app/
├── src/
│   ├── index.js
│   └── App.js
├── public/
│   └── index.html
├── webpack.config.js
├── .babelrc
└── package.json
  1. 配置 Babel

创建 .babelrc 文件:

javascript 复制代码
{
  "presets": ["@babel/preset-env", "@babel/preset-react"]
}
  1. 配置 Webpack

创建 webpack.config.js 文件:

javascript 复制代码
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js',
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
        },
      },
      {
        test: /\.css$/,
        use: ['style-loader', 'css-loader'],
      },
    ],
  },
  resolve: {
    extensions: ['.js', '.jsx'],
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './public/index.html',
    }),
  ],
  devServer: {
    contentBase: path.join(__dirname, 'dist'),
    compress: true,
    port: 9000,
  },
};
  1. 创建 React 组件

src/index.js:

javascript 复制代码
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(<App />, document.getElementById('root'));

src/App.js:

javascript 复制代码
import React from 'react';

const App = () => {
  return <h1>Hello, Webpack and React!</h1>;
};

export default App;
  1. 创建 HTML 模板

public/index.html:

javascript 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>React App</title>
</head>
<body>
  <div id="root"></div>
</body>
</html>
  1. 更新 package.json 脚本
javascript 复制代码
"scripts": {
  "start": "webpack serve --mode development",
  "build": "webpack --mode production"
}
  1. 启动开发服务器
javascript 复制代码
npm start

2.2. Vite 方案

  1. 创建项目目录并初始化
javascript 复制代码
mkdir my-react-app
cd my-react-app
npm init -y
  1. 安装 Vite 和相关依赖
javascript 复制代码
npm install react react-dom
npm install --save-dev vite @vitejs/plugin-react
  1. 创建项目结构
javascript 复制代码
my-react-app/
├── src/
│   ├── main.jsx
│   ├── App.jsx
│   └── index.css
├── public/
│   └── index.html
├── vite.config.js
├── package.json
└── .gitignore
  1. 创建 Vite 配置文件

vite.config.js:

javascript 复制代码
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [react()],
  server: {
    open: true,
  },
});
  1. 创建 React 组件

src/main.jsx:

javascript 复制代码
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import './index.css';

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root')
);

src/App.jsx:

javascript 复制代码
import React from 'react';

const App = () => {
  return <h1>Hello, Vite and React!</h1>;
};

export default App;

src/index.css:

css 复制代码
body {
  font-family: Arial, sans-serif;
  margin: 0;
  padding: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background-color: #f6f6f0;
}
  1. 创建 HTML 模板

public/index.html:

javascript 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>React App</title>
</head>
<body>
  <div id="root"></div>
  <script type="module" src="/src/main.jsx"></script>
</body>
</html>
  1. 更新 package.json 脚本
javascript 复制代码
"scripts": {
  "dev": "vite",
  "build": "vite build",
  "serve": "vite preview"
}
  1. 启动开发服务器
javascript 复制代码
npm run dev

3. 展望

本文介绍了基于 Vite 和 Webpack 搭建 React 基础项目结构的完整流程。对于更复杂的构建配置,可以在此基础上通过添加相应的配置实现。Webpack 通过 loader 和 plugin 来增强构建能力,而 Vite 则通过 plugin 来实现类似的功能。这些高级配置我们将在后续文章中详细探讨。

4. 补充资料

Vite 初始化 React: https://vitejs.dev/guide/#scaffolding-your-first-vite-project

Webpack 初始化 React: https://github.com/facebookcreate-react-app

React 基础架构社区方案: https://github.com/kriasoft/react-starter-kit

React 中文官网: https://github.com/kriasoft/react-starter-kit

React Hooks 套件: https://github.com/streamich/react-use

相关推荐
全栈探索者3 天前
@Component + struct = 你的新函数组件——React 开发者的鸿蒙入门指南(第 2 期)
react·harmonyos·arkts·前端开发·deveco studio·鸿蒙next·函数组件
realhuizhu3 天前
为什么程序员配出的颜色像"斑斓的灰"?因为你还在靠直觉
前端开发·ai工具·ui设计·deepseek·程序员提升
奔跑的呱呱牛4 天前
viewer-utils 图片预览工具库
javascript·vue·react
HetFrame4 天前
一种纯前端实现 Markdown 内容即时分享的思路
html·react·链接·markdown·工具
小浣熊喜欢揍臭臭4 天前
qiankun微服务搭建之【react+nextJs】
微服务·react
gentle coder6 天前
【langchain】agent部署的基础入门代码(持续更新中~)
python·langchain·react
RichardLau_Cx7 天前
【保姆级实操】MediaPipe SDK/API 前端项目接入指南(Web版,可直接复制代码)
前端·vue·react·webassembly·mediapipe·手部追踪·前端计算机视觉
小小工匠7 天前
大模型开发 - 零手写 AI Agent:深入理解 ReAct 模式与 Java 实现
人工智能·react
雪域迷影8 天前
MacOS中运行Next.js项目注册新用户时MongoDB报错MongoServerError
mongodb·macos·react·next.js
Highcharts.js8 天前
使用Highcharts与React集成 官网文档使用说明
前端·react.js·前端框架·react·highcharts·官方文档