• 前端笔记:Create React App 初始化项目的几个关键文件解读


    1 介绍

    • Create React App 是一个官方支持的方式,用于创建单页应用的 React 设置
    • 用于构建用户界面的 JAVASCRIPT 库
    • 主要用于构建 UI

    2 项目结构

    一个典型的 Create React App 项目结构如下:

    1. ├── package.json
    2. ├── public # 这个是webpack的配置的静态目录
    3. │ ├── favicon.ico
    4. │ ├── index.html # 默认是单页面应用,这个是最终的html的基础模板
    5. │ └── manifest.json
    6. └── src
    7. ├── App.css # App根组件的css
    8. ├── App.js # App组件代码
    9. ├── App.test.js
    10. ├── index.css # 启动文件样式
    11. ├── index.js # 启动的文件(开始执行的入口)!!!!
    12. ├── logo.svg
    13. └── serviceWorker.js

    其中:

    • public/index.html: 是应用的入口HTML文件。
    • src/index.js: 是JavaScript入口文件,它渲染App组件。
    • src/App.js: 是一个示例组件,你可以开始在这里编写你的应用代码。
    • package.json: 包含项目的依赖和脚本命令等信息。

    3 启动和创建

    3.1 创建项目

    npx create-react-app my-app

     你就创建了一个名为my-app的程序

    其中public:

    src:

    3.2 启动

    一旦你创建了项目,就可以进入项目目录并启动它

    npm start
    

    这将启动一个开发服务器,并在你的默认浏览器中打开一个新的标签页,显示你的 React 应用。

    4 关键的几个文件

    • 在使用 Create React App 创建的项目中,关键的几个文件和目录分别承担着不同的职责。
    • 对于初步了解和开发而言,可以关注以下几个文件:

    4.1 src/index.js

    这个文件是整个 React 应用的入口点。它通常用于渲染根 React 组件到 HTML 页面上。

    初始化创建完的index.js如下:

    1. import React from 'react';
    2. //从 'react' 模块中导入 React 对象。
    3. //这是创建 React 组件和使用 React 功能的基础。
    4. import ReactDOM from 'react-dom/client';
    5. //从 'react-dom/client' 模块中导入 ReactDOM 对象。
    6. //这个对象提供了与 DOM 相关的方法,如将 React 组件渲染到页面上。
    7. import './index.css';
    8. //导入 index.css 文件,这个文件通常包含应用的全局样式。
    9. import App from './App';
    10. //从本地的 App.js 文件中导入 App 组件(函数组件)。
    11. //App 组件通常是应用的根组件,包含了其他的子组件。
    12. import reportWebVitals from './reportWebVitals';
    13. //从 reportWebVitals.js 文件中导入 reportWebVitals 函数。
    14. //这个函数用于测量和报告页面性能。
    15. const root = ReactDOM.createRoot(document.getElementById('root'));
    16. //使用 ReactDOM.createRoot() 方法创建一个 React 根
    17. //这个方法的参数是一个 DOM 元素,这里是 id 为 'root' 的元素,它将作为 React 组件渲染的挂载点
    18. root.render(
    19. <React.StrictMode>
    20. <App />
    21. React.StrictMode>
    22. );
    23. //使用 root.render() 方法将 React 应用(App 组件)渲染到前面创建的根上。
    24. //这里使用了 React.StrictMode,它是一个用于检查潜在问题的包装组件。
    25. // If you want to start measuring performance in your app, pass a function
    26. // to log results (for example: reportWebVitals(console.log))
    27. // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
    28. reportWebVitals();
    29. //调用 reportWebVitals 函数。这个函数用于在开发模式下报告页面的性能。

    4.1.1 部分详细解释

    对于

    const root = ReactDOM.createRoot(document.getElementById('root'));
    

     这一行代码是用来创建一个 React 根(root)并将它挂载到 DOM 上的

    •  document.getElementById('root')使用 JavaScript 的 getElementById 函数从 HTML 文档中获取一个元素,该元素的 ID 为 "root"
      • public/index.html 文件中,你可以找到这个元素,它通常是一个空的 div 元素,用作 React 应用的挂载点。
    • ReactDOM.createRoot在这个ID 为 "root" 的元素上创建一个React 并发根
    • 把这个 创建的React 并发根 存储在 root 常量中,以便后续使用

    对于

    1. root.render(
    2. <React.StrictMode>
    3. <App />
    4. React.StrictMode>
    5. );
    •  我们知道 root 是通过 ReactDOM.createRoot(document.getElementById('root')) 创建的一个 React 并发根实例
    • 这个 root 实例有一个 render 方法,该方法用于渲染 React 元素(在这里是我们的 组件,通常定义在App.js中)到其关联的 DOM 元素(在这里是 ID 为 "root" 的 div 元素)

    4.2 src/App.js

    1. import logo from './logo.svg';
    2. //导入了一个 SVG 文件,并将其分配给名为 logo 的变量
    3. //在后续的JavaScript代码中,可以使用 {logo} 来引用这个 SVG 图片
    4. import './App.css';
    5. //导入了 CSS 样式文件 App.css。
    6. //所有在 App.css 文件中定义的样式都可以在这个组件中使用。
    7. function App() {
    8. return (
    9. <div className="App">
    10. <header className="App-header">
    11. <img src={logo} className="App-logo" alt="logo" />
    12. <p>
    13. Edit <code>src/App.jscode> and save to reload.
    14. p>
    15. <a
    16. className="App-link"
    17. href="https://reactjs.org"
    18. target="_blank"
    19. rel="noopener noreferrer"
    20. >
    21. Learn React
    22. a>
    23. header>
    24. div>
    25. );
    26. }
    27. //定义 React 函数组件,名为 App。
    28. //函数组件是使用 JavaScript 函数定义的组件。
    29. export default App;
    30. //导出 App 组件,使其可以在其他文件(例如 index.js)中通过 import 语句导入和使用

    App中的return部分

    • : 这一行创建了一个 div 元素,其 className 属性为 App
    • :创建了一个 header 元素,其 className 属性为App-header
    • logo
      • 插入了一个图片元素
      • src={logo} 指定了图片的源为之前导入的 logo SVG 文件
      • 应用了 App-logo 的 CSS 样式,并设置了 alt 属性为 "logo"
        • 在App.css中,App-logo的部分是
          • 所有的 .App-logo 元素(不论用户的动画偏好如何)都将有 height: 40vmin;pointer-events: none; 这些样式。

          • 如果用户的系统设置表示他们没有对减少动画有特殊偏好(prefers-reduced-motion: no-preference),那么 .App-logo 元素还将拥有一个无限循环的旋转动画。

    • : 分别创建了段落和链接元素,并在其中插入了文本和其他 JSX 元素

    4.3 public/index.html 

    4.4 src/App.css

    4.5 src/index.css

    4.6 package.json

  • 相关阅读:
    积分商城游戏设置的基本要点
    九、忘记密码功能的实现
    QT之QML开发 行列布局,流布局,网格布局
    Redis技术总结
    【JPCS出版】2022年第三届控制理论与应用国际会议(ICoCTA 2022)
    html手势密码解锁插件(附源码)
    深度学习在文档矫正中的应用
    数据结构 - 7(Map和Set 15000字详解)
    后端数据配置相对路径,前端添加网站根 URL (根路径)- js获取网站项目根路径- 获取根路径后的第一个斜杠前 / 的项目- - 判断url包含某字符串
    java面试题总结
  • 原文地址:https://blog.csdn.net/qq_40206371/article/details/133715074