React脚手架create-react-app简介

往期回顾:

React 的常用脚手架

React 的脚手架有很多,以下是比较常用的几个:

  1. create-react-app官方提供的脚手架,简单易用,可以快速创建一个基于 React 的项目。
  2. Next.js:基于 React 的服务器渲染框架,可以用于构建 SSR 应用和静态网站。
  3. Gatsby:静态网站生成器,可以生成高性能的静态网站,适合构建博客和电子商务网站。
  4. React Native CLI:用于构建原生移动应用程序的 React 框架。
  5. React Boilerplate:一款 React 应用程序脚手架,包含了 React、Redux、React Router 和 webpack 等相关库和工具。
  6. UMI:它是一个完整的企业级脚手架,提供了路由、插件、中间件、构建等方面的功能,可以满足不同项目的需求;
  7. Dva.js:它是一个基于 React 和 Redux 的数据流框架,可以用于快速构建复杂的单页应用。
  8. vite:很好用!很快!建议直接看vite官网学习,笔者使用的就是vite!。

create-react-app

create-react-app底层采用webapck作为构建工具 。

项目创建

使用 create-react-app 创建一个 React 项目的流程如下

  1. 全局安装create-react-app
js 复制代码
npm install -g create-react-app
  1. 创建一个名为 my-react的项目

其中 my-react 是你想要创建项目的名称,你可以把它替换成任何你想要的名称。

js 复制代码
 create-react-app my-react
  1. 进入 my-react 目录 ,启动项目,在终端里执行命令 npm start,它会自动打开一个浏览器窗口并且显示你的React应用。或者浏览器输入http://localhost:3000/也可以访问
js 复制代码
 npm start

页面效果

这样你就成功创建了一个 React 应用,你可以继续开发和修改它,并且使用命令 npm run build 打包生产环境的应用。

注,本文以为例来深入介绍脚手架,版本信息如下

perl 复制代码
"dependencies": {
    "@testing-library/jest-dom": "^5.16.5",
    "@testing-library/react": "^13.4.0",
    "@testing-library/user-event": "^13.5.0",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-scripts": "5.0.1",
    "web-vitals": "^2.1.4"
  },

脚手架目录

项目创建完毕后,我们完整的项目结构如图。

java 复制代码
my-react
├─ .gitignore
├─ package-lock.json
├─ package.json
├─ public
│  ├─ favicon.ico
│  ├─ index.html
│  ├─ logo192.png
│  ├─ logo512.png
│  ├─ manifest.json
│  └─ robots.txt
├─ README.md
└─ src
   ├─ App.css
   ├─ App.js
   ├─ App.test.js
   ├─ index.css
   ├─ index.js
   ├─ logo.svg
   ├─ reportWebVitals.js
   └─ setupTests.js

public 目录

public 目录用于存放一些不需要被打包的静态文件,例如:HTML 文件、图片、字体文件等

  • index.html: 是唯一需要存在的 HTML 文件,所有 React 组件都将被渲染在这个 HTML 文件内。
js 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <!-- %PUBLIC_URL%代表public文件夹的路径 -->
    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
    <!-- 开启理想窗口,用于移动端的适配 -->
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <!-- 用于配置浏览器页签+地址栏颜色(仅支持安卓手机浏览器) -->
    <meta name="theme-color" content="#000000" />
    <meta
      name="description"
      content="Web site created using create-react-app"
    />
    <!-- 用于指定网页添加到手机主屏幕后的图标,苹果手机 -->
    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
    <!-- 应用套壳时使用 -->
    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
    <title>React App</title>
  </head>
  <body>
    <!-- 浏览器不支持js显示的内容 -->
    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
  </body>
</html>
  • manifest.json: 是一个 Web App 的配置文件,包含有关应用程序的信息,例如名称、描述、图标等。
  • favicon.ico: 是应用程序的图标文件,通常会在 Web 浏览器中显示。
  • robots.txt: 是一个标准的互联网协议,用于告诉搜索引擎哪些页面可以抓取,哪些不能抓取。

src目录

src 文件夹是创建 React 应用程序时存放你的主要源代码的地方

css 复制代码
└─ src
   ├─ App.css
   ├─ App.js
   ├─ App.test.js
   ├─ index.css
   ├─ index.js
   ├─ logo.svg
   ├─ reportWebVitals.js
   └─ setupTests.js
  • reportWebVitals.js是一个网页性能监测配置文件,我们不用关注
  • setupTests.js是单元测试文件,我们同样不用关注
  • App.js是应用程序的根组件。
js 复制代码
// src\App.js
import logo from './logo.svg';
import './App.css';

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;

脚手架文件中的代码导出了一个函数式组件。

  • App.css 是主应用程序的的样式文件。
  • App.test.js 是应用测试文件可以忽略不管。
  • index.js:应用程序的入口文件。这个文件渲染了 App 组件,并向其传递了一些配置。
js 复制代码
// 导入 React 库,这是必需的,因为我们的应用程序要用到 React 组件
import React from 'react';
// 导入了ReactDOM,这个库是将 React 组件渲染到页面中的关键所在。
import ReactDOM from 'react-dom/client';
// 这是应用程序的样式文件
import './index.css';
// 导入了 App 组件,这是我们的应用程序的主组件,通常包含其他组件
import App from './App';
// 单元测试文件
import reportWebVitals from './reportWebVitals';
// 
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

// 性能监测,我们可以删除
reportWebVitals();

createRoot 方法返回一个对象,该对象具有 render 方法,用于渲染 React 应用。render 方法接受一个 React 元素作为参数,表示要渲染的组件树。

在这段代码中,我们使用 React.StrictMode 组件来启用 React 的严格模式。严格模式会检查代码中的一些问题,并在开发环境下警告我们。然后我们将 组件包裹在 StrictMode 组件中,表示该组件及其所有子组件都将启用严格模式。

最后,我们使用 render 方法将应用渲染到 root 元素中。这意味着 React 将会渲染 组件,并将其渲染的结果插入到 root 元素中。

相关推荐
程序员小张丶22 分钟前
React Native在HarmonyOS 5.0阅读类应用开发中的实践
javascript·react native·react.js·阅读·harmonyos5.0
EndingCoder22 分钟前
React Native 是什么?为什么学它?
javascript·react native·react.js
程序员小张丶1 小时前
基于React Native开发HarmonyOS 5.0主题应用技术方案
javascript·react native·react.js·主题·harmonyos5.0
MrSkye2 小时前
React入门:组件化思想?数据驱动?
前端·react.js·面试
JacksonGao2 小时前
一分钟带你了解React Fiber的工作单元结构!
前端·react.js
Hilaku3 小时前
我为什么觉得 React 正在逐渐失去吸引力?
前端·react.js·前端框架
架构个驾驾3 小时前
React 18 核心特性详解:Props、State 与 Context 的深度实践
react.js·前端框架
itslife3 小时前
实现 render 函数 - 初始化更新队列
前端·react.js·前端框架
WildBlue3 小时前
🚀 React组件化实战:用TodoList项目搭乐高式开发!🎉
前端·react.js
wen's3 小时前
React Native 弹窗组件优化实战:解决 Modal 闪烁与动画卡顿问题
javascript·react native·react.js