react_05create-react-app脚手架详细解析(export)

脚手架是什么?

是一种工具:快速生成项目的工程化结构,让项目从搭建到开发,到部署,整个流程变得快速和便捷。

安装过程:

1.安装node,安装完成后验证版本,出现对应版本就表示成功

node --version
npm --version

2.React脚手架默认是使用yarn 管理,故还需要安装yarn(建议全局安装)

npm install -g yarn

3.安装淘宝镜像

npm install -g cnpm  --registry=https://registry.npm.taobao.org

4.安装React脚手架

npm install -g create-react-app
创建项目:

1.通过终端命令 运行:create-react-app react-demo
2.yarn start 可以将项目跑起来

目录结构分析:
目录结构分析
注意两个特殊文件:

manifest.jsonserviceWorker.js这两个文件都是与PWA(Web App)有关,一般可以不用理会,除非你要做离线功能。

验证脚手架是基于webpack:

在目录中并看不到相关webpack的相关配置,因为脚手架默认隐藏了配置,若你需要看到相关配置信息,则可以通过package.json中的命令:yarn eject 来进行查看,并且此操作不可逆(执行后目录结构会改变,无法变回来)

从0体验创建过程:
  • es6导入导出
//情形一
export function sum(a,b){return a+b
}
export function mul(a,b){return a*b
}
//在另外的文件中引用
import{sum,mul} from './xxx'
//情形二
export default function sum(a,b){return a+b
}
//引用
import sum from './xxx'
  • 标签自动补全插件:htmltagwrap
  • 正式开始新建工程
    1.创建完后删除不必要的文件,值保留public文件夹下index.html,src目录下全删,然后新建index.js空白文件


    空白工程

    2.我们知道项目的入口是index.js,现在里面是空白的,运行项目页面肯定是空白的,接下来在里面添加内容。

import React from 'react';// 渲染jsx<h2>Hello,World</h2>,实际上是react.createElement,所以React也是要导入
import ReactDOM from 'react-dom';//ReactDOM.render需要,所以得导
ReactDOM.render(<h2>Hello,World</h2>,document.getElementById("root"))

此时运行项目发现页面可以正常展示项目了,但是我们一般会采用组件化方式来开发,需要进行部分修改

  • 优化第一步:
    index.js
import React from 'react';
import ReactDOM from 'react-dom';
class App extends React.Component{constructor(){super();this.state={counter:10}}render(){return  (<div>      <h2>{this.state.counter}</h2></div>)}
}
ReactDOM.render(<App/>,document.getElementById("root"))

此时重新运行项目,项目正常,只不过由原来的小段jsx变为渲染app组件。


  • 优化第二步:
    抽离出app.js
import React from 'react';
export default class App extends React.Component{constructor(){super();this.state={counter:101}}render(){return  (<div>      <h2>{this.state.counter}</h2></div>)}
}

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './app'
ReactDOM.render(<App/>,document.getElementById("root"))

此时模块化已经初具雏形


  • 优化第三步
    app.js
// import React from 'react';
// const {Component} = React;
import React, {Component} from 'react';//这样更加简洁,并且import React 这不可省略,因为下面render函数需要用
export default class App extends Component{constructor(){super();this.state={counter:10}}render(){return  (<div>      <h2>{this.state.counter}</h2></div>)}
}

完工!

最后编辑于:2025-06-15 11:02:58


喜欢的朋友记得点赞、收藏、关注哦!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94614.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Uncaught TypeError: Illegal invocation

报错信息Uncaught TypeError: Illegal invocation关键代码$.operate.post(prefix "/edit", { "taskId": taskId, "taskStatus": completed });<input id"taskId" style"display: none;">[[${completeTask.taskId}]]&…

深入解析Go设计模式:责任链模式实战

什么是责任链模式? 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它通过构建处理者链来传递请求。每个处理者既能自行决定是否处理当前请求,也可将请求转交给后续处理者。该模式的核心优势在于解耦请求发送方与处理方,使多个对象都能获得处理请求的机…

机器视觉系统工业相机的成像原理及如何选型

机器视觉系统是一种模拟人类视觉功能&#xff0c;通过光学装置和非接触式传感器获取图像数据&#xff0c;并进行分析和处理&#xff0c;以实现对目标物体的识别、测量、检测和定位等功能的智能化系统。其目的是让机器能够理解和解释视觉信息&#xff0c;从而做出决策或执行任务…

Java如何快速实现短信登录?

全文目录&#xff1a;开篇语前言1. 短信登录的工作原理2. 短信登录的优点3. 短信登录的缺点4. 短信登录的实现示例&#xff1a;使用 Java 实现短信登录的流程4.1 发送短信验证码&#xff08;伪代码&#xff09;4.2 使用第三方短信平台发送短信&#xff08;以阿里云为例&#xf…

HTML已死,HTML万岁——重新思考DOM的底层设计理念

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

客户管理系统的详细项目框架结构

以下是针对客户管理系统的详细项目框架结构&#xff0c;整合了核心业务模块&#xff08;客户信息、合同管理、售前售后等&#xff09;&#xff0c;并补充了实用扩展模块&#xff08;如数据统计、标签管理等&#xff09;&#xff0c;严格遵循Django模块化设计原则&#xff1a; c…

【01】OpenCV C#——C#开发环境OpenCvSharp 环境配置 工程搭建 及代码测试

文章目录一、OpenCV 介绍二、OpenCvSharp 介绍三、OpenCvSharp环境搭建3.1 创建新项目3.2 添加 NuGet组件3.3 代码测试3.4 相较于 C OpenCV不同的之处四、LearnOpenCV有时候&#xff0c;单纯c#做前端时会联合C实现的dll来落地某些功能由于有时候会用C - Opencv实现算法后封装成…

【解决办法】报错Found dtype Long but expected Float

Found dtype Long but expected Float错误通常发生在尝试将一个数据类型为Long的张量传递给一个期望数据类型为Float的函数或操作时。在PyTorch中&#xff0c;Long和Float是两种常见的数据类型&#xff0c;分别对应于64位整数和32位浮点数。某些函数或操作可能只接受特定数据类…

QtC++ 调用 tesseract开源库 搭配 Opencv 实现文字识别:从tesseract库基本介绍到实际应用实现

前言 在当今数字化时代&#xff0c;文字识别&#xff08;OCR&#xff09;技术已经渗透到我们生活和工作的方方面面&#xff0c;从扫描文档的自动排版到车牌识别、票据信息提取等&#xff0c;都离不开 OCR 技术的支持。而在众多 OCR 实现方案中&#xff0c;QtC 结合 tesseract 和…

数据集-目标检测系列- 地球仪 数据集 globe>> DataBall

数据集-目标检测系列- 地球仪 数据集 globe&#xff1e;&#xff1e; DataBall贵在坚持&#xff01;* 相关项目1&#xff09;数据集可视化项目&#xff1a;gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview2&#xff09;数据集训练、推理相关项目&…

[Oracle] DUAL数据表

Oracle中的DUAL数据表是一个特殊的单行单列虚拟表结构&#xff1a;1行1列SELECT * FROM DUAL;输出结果&#xff1a;列名默认DUMMY&#xff0c;值为X常见使用DUAL数据表的场景&#xff1a;1.系统函数调用测试当需要测试Oracle函数但不需要真实表数据时&#xff0c;我们可以考虑使…

第五篇: 深入解析基于 SQLAlchemy 的聊天记录持久化模块:`message_model` 与数据库操作封装

深入解析基于 SQLAlchemy 的聊天记录持久化模块:message_model 与数据库操作封装 作者:zgw 标签:SQLAlchemy、Python、FastAPI、数据库持久化、ORM、聊天系统、AI 应用开发 一、前言 在构建大模型应用(如聊天机器人、知识库问答系统)时,对话记录的持久化 是实现“可追溯…

学习游戏制作记录(将各种属性应用于战斗以及实体的死亡)8.5

1.将各种属性应用于战斗我们希望将上节课的CharactorState脚本作为一个父类&#xff0c;而玩家和敌人的属性状态都是继承自它的创建PlayerStats脚本&#xff1a;public class PlayerStats : CharactorState {private Player player;//获取玩家脚本protected override void Star…

Higgsfield平替,地球转场+动物竖中指AI视频教程

大家好&#xff0c;这里是K姐。 一个帮助你把AI真正用起来的女子。 最近TikTok上的网友已经集体疯魔了——刷到的视频总以高空航拍开场&#xff0c;镜头从地球拉近后&#xff0c;要么是橘猫蹲在白宫草坪比中指&#xff0c;要么是柴犬在富士山顶比中指…… 这种堪比好莱坞运镜…

界面规范的其他框架实现-列表-layui实现

另一个要改造的系统使用了layui&#xff0c;改造方式如下&#xff1a;斑马线&#xff1a;.layui-table[lay-even] tr:nth-child(even) {background-color: #f2f2f2 }鼠标滑过&#xff1a;.layui-table tbody tr:hover{background-color: #8dccff }标题行&#xff1a;.layui-tab…

STM32学习笔记2-GPIO的输出模式

GPIOGPIO&#xff1a;通用输入输出口&#xff1b;可配置8种输入输出模式引脚电平&#xff1a;0V-3.3V&#xff0c;部分引脚可容忍5V也可认为高电平&#xff0c;但是对于输出而言&#xff0c;最大就只能输出3.3V&#xff0c;因为供电就只有3.3V&#xff0c;能容忍5v的在以下的引…

Linux系统学习2之磁盘管理

了解磁盘内容&#xff1a;df&#xff1a;df -a &#xff08;-a是列出所有&#xff0c;-k以kb显示&#xff0c;-h以Gb显示&#xff0c;-m以Mbyte显示&#xff0c;-H为用1000b代替1024b&#xff0c;-t为显示文件类型&#xff0c;-i为用inode显示容量&#xff09;&#xff1a;&a…

北大、蚂蚁三个维度解构高效隐私保护机器学习:前沿进展+发展方向

在数据隐私日益重要的 AI 时代&#xff0c;如何在保护用户数据的同时高效运行机器学习模型&#xff0c;成为了学术界和工业界共同关注的难题。北大团队最新完成的综述《Towards Efficient Privacy-Preserving Machine Learning: A Systematic Review from Protocol, Model, and…

计算机网络:如何在实际网络中进行子网划分

在实际网络中,子网划分是通过“借位”将一个大的IP网络分割为多个小的子网,以提高IP地址利用率、增强网络安全性和简化管理。以下是具体的实施步骤、原理和注意事项: 一、子网划分的核心目的 提高IP利用率:避免大网络中IP地址的浪费(例如一个C类地址默认支持254台主机,若…

《第五篇》基于RapidOCR的图片和PDF文档加载器实现详解

基于RapidOCR的图片和PDF文档加载器实现详解 引言 在构建知识库时,我们经常需要处理包含图片和PDF文档的数据。这些文档中的文本信息通常以图像形式存在,需要通过OCR技术来提取。本文将详细介绍如何使用RapidOCR技术实现图片和PDF文档的文本提取加载器。 核心概念 RapidO…