【React】新建React项目

目录

  • create-react-app基础运用
  • React核心依赖
  • React 核心思想:数据驱动
  • React 采用 MVC体系
  • package.json
  • index.html
  • 好书推荐

官方提供了快速构建React 项目的脚手架: create-react-app ,目前使用它安装默认是19版本,我们这里降为18版本。

create-react-app基础运用

1、安装脚手架

//mac前面要设置sudonpm i create-react-app -g  

2、查看版本

 create-react-app --version

3、新建React项目,项目名称要遵循npm包命名规范:使用“数字、小写字母、_”命名

create-react-app 项目名称

4、项目目录

      |- node_modules|- src:所以后续编写的代码,几乎都放在SRC下「打包的时候,一般只对这个目录下的代码进行处理」|- index.js|- public:放页面模板|- index.html|- package.json|- 

React核心依赖

在React项目中,会默认安装下面的依赖:

  • react:React框架的核心
  • react-dom:React视图渲染的核心,其主要基于React构建WebApp(HTML页面)
  • react-scripts:脚手架为了让项目目录看起干净一些,把webpack打包的规则及相关插件/loader等都隐藏到了node_modules目录下,react-scripts就是脚手架中自己对打包命令的一种封装,基于它打包,会调用node_modules中的webpack等进行处理!!

React 核心思想:数据驱动

React核心思想:不在直接去操作DOM,而是改为“数据驱动思想”。然后操作DOM的思想:操作DOM比较消耗性能「主要原因就是:可能会导致DOM重排(回流)/重绘」,也比较麻烦。

数据驱动思想:

  • 不会直接操作DOM
  • 我们去操作数据「当我们修改了数据,框架会按照相关的数据,让页面重新渲染」
  • 框架底层实现视图的渲染,也是基于操作DOM完成的
    • 构建了一套 虚拟DOM->真实DOM 的渲染体系
    • 有效避免了DOM的重排/重绘
  • 开发效率更高、最后的性能也相对较好

React 采用 MVC体系

在这里插入图片描述

React框架采用的是MVC体系;Vue框架采用的是MVVM体系;

MVC:model数据层 + view视图层 + controller控制层

  • React中是基于jsx语法来构建视图的
  • 构建数据层:在视图中,需要“动态”处理的(需要变化的,不论是样式还是内容),我们都要有对应的数据模型
  • 控制层:当我们在视图中(或者根据业务需求)进行某些操作的时候,都是去修改相关的数据,然后React框架会按照最新的数据,重新渲染视图,以此让用户看到最新的效果!

总结:
1、数据驱动视图的渲染!!
2、视图中的表单内容改变,想要修改数据,需要开发者自己去写代码实现!!
3、“单向驱动”

MVVM:model数据层 + view视图层 + viewModel数据/视图监听层

  • 数据驱动视图的渲染:监听数据的更新,让视图重新渲染
  • 视图驱动数据的更改:监听页面中表单元素内容改变,自动去修改相关的数据

总结: “双向驱动”

package.json

其中scripts中的属性:

 "scripts": {"start": "react-scripts start","build": "react-scripts build","test": "react-scripts test","eject": "react-scripts eject"},
  • start: 用于开发环境,启动本地 Web 服务器。
  • build: 用于生产环境,生成静态资源文件,输出到 dist 目录。
  • test: 用于运行单元测试。
  • eject: 暴露 Webpack 配置文件,供开发者自定义。
 "browserslist": {"production": [">0.2%","not dead","not op_mini all"],"development": ["last 1 chrome version","last 1 firefox version","last 1 safari version"]}

在这里插入图片描述

browserslist 用于指定项目需要兼容的浏览器范围,通常被工具如 AutoprefixerBabel 使用,以确保 CSS 和 JavaScript 能够适配所选的浏览器环境。比如:

使用场景:

  1. postcss-loader + autoprefixer

    • 根据指定的浏览器环境自动添加 CSS 前缀(如 -webkit--ms- 等)。
    • 确保 CSS 属性兼容旧版本浏览器。
  2. babel-loader

    • 将 ES6+ 代码转译为目标浏览器支持的 ES5 代码。

属性配置:

  1. browserslist 字段:包含两个环境配置:productiondevelopment

  2. production 环境

    • ">0.2%":支持全球使用率超过 0.2% 的浏览器。
    • "not dead":排除不再维护或不更新的浏览器(如 IE)。
    • "not op_mini all":不考虑 Opera Mini 浏览器。
  3. development 环境

    • "last 1 chrome version":仅支持最新的一个 Chrome 版本。
    • "last 1 firefox version":仅支持最新的一个 Firefox 版本。
    • "last 1 safari version":仅支持最新的一个 Safari 版本。

production 配置中,通过规则如 "not dead""not ie <= 8",明确排除了低版本的 IE 浏览器(包括 IE 8 及以下)。若需要兼容低版本 IE,可以在配置中添加如下规则:

"browserslist": {"production": [">0.2%","last 2 versions","not ie <= 8"],"development": ["last 1 chrome version","last 1 firefox version","last 1 safari version"]
}

全部的package.json如下:

{"name": "demo","version": "0.1.0","private": true,"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" // 性能检测工具},// 打包命令是基于 react-scripts 处理的"scripts": {"start": "react-scripts start", // 开发环境:在本地启动 Web 服务器,预览打包内容"build": "react-scripts build", // 生产环境:打包部署,打包的内容输出到 dist 目录"test": "react-scripts test",   // 单元测试"eject": "react-scripts eject"  // 暴露 Webpack 配置,可以修改默认配置},// 对 Webpack 中 ESLint 词法检测的相关配置// 词法检测// - 词法错误(不符合标准规范)// - 不符合标准(代码本身不报错,但不符合 ESLint 的检测规范)"eslintConfig": {"extends": ["react-app","react-app/jest"]},// 基于 browserlist 规范设置浏览器的兼容情况// - postcss-loader + autoprefixer 会给 CSS3 设置相关的前缀// babel-loader 会把 ES6 编译为 ES5"browserslist": {"production": [">0.2%",          // 使用率超过 0.2% 的浏览器"not dead",       // 不考虑 IE"not op_mini all" // 不考虑欧朋浏览器],"development": [ // 不兼容低版本和 IE 浏览器"last 1 chrome version","last 1 firefox version","last 1 safari version"]}
}

index.html

public目录下会生成index.htmlindex.html 是 React 项目的静态模板文件,public目录用于存放不会被打包的静态资源,而 %PUBLIC_URL% 提供了动态路径占位功能,在构建过程中被替换为public 目录的路径。
在这里插入图片描述

好书推荐

《微前端之道,从理论到实践》:链接直达

全面介绍微前端技术:本书涵盖微前端的各个方面,包括微前端的起源与发展、适用场景、解决的问题、缺点以及解决方案,让读者对微前端有一个全面的了解。
深入剖析微前端解决方案:《微前端之道:从理论到实践:视频教学版》详细介绍iframe方案、动态script方案、webComponent以及社区微前端解决方案,并通过实例来帮助读者更好地理解和应用。结合实践:《微前端之道:从理论到实践:视频教学版》不仅介绍微前端的基础知识,还结合实践,手把手地指导读者如何构建微前端项目,解决SSR问题,优化性能,进行服务器部署和老旧项目改造等。

适合各类读者:无论是对前端开发感兴趣的初学者,还是已经有一定经验的开发人员,甚至是项目经理,都可以从《微前端之道:从理论到实践:视频教学版》中获得宝贵的经验和知识。

在这里插入图片描述

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

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

相关文章

Linux手写FrameBuffer任意引脚驱动spi屏幕

一、硬件设备 开发板&#xff1a;香橙派 5Plus&#xff0c;cpu&#xff1a;RK3588&#xff0c;带有 40pin 外接引脚。 屏幕&#xff1a;SPI 协议 0.96 寸 OLED。 二、需求 主要是想给板子增加一个可视化的监视器&#xff0c;并且主页面可调。 平时跑个模型或者服务&#xff0c;…

网络安全构成要素

一、防火墙 组织机构内部的网络与互联网相连时&#xff0c;为了避免域内受到非法访问的威胁&#xff0c;往往会设置防火墙。 使用NAT&#xff08;NAPT&#xff09;的情况下&#xff0c;由于限定了可以从外部访问的地址&#xff0c;因此也能起到防火墙的作用。 二、IDS入侵检…

React Native的现状与未来:从发展到展望

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

数据结构——链表(概念,类型,java实现、增删、优缺点)

我是一个计算机专业研0的学生卡蒙Camel&#x1f42b;&#x1f42b;&#x1f42b;&#xff08;刚保研&#xff09; 记录每天学习过程&#xff08;主要学习Java、python、人工智能&#xff09;&#xff0c;总结知识点&#xff08;内容来自&#xff1a;自我总结网上借鉴&#xff0…

app版本控制java后端接口版本管理

java api version 版本控制 java接口版本管理 1 自定义 AppVersionHandleMapping 自定义AppVersionHandleMapping实现RequestMappingHandlerMapping里面的方法 public class AppVersionHandleMapping extends RequestMappingHandlerMapping {Overrideprotected RequestCondit…

LRU 算法详解与 Java 的两种实现方式

LRU 算法详解与 Java 的两种实现方式 LRU 算法详解与 Java 的两种实现方式一、LRU 算法简介二、LRU 算法原理三、LRU 算法应用场景四、Java 实现 LRU 算法(一)基于 LinkedHashMap 实现(二)基于双向链表和 HashMap 实现五、总结LRU 算法详解与 Java 的两种实现方式 一、LRU…

基于 Python 的财经数据接口库:AKShare

AKShare 是基于 Python 的财经数据接口库&#xff0c;目的是实现对股票、期货、期权、基金、外汇、债券、指数、加密货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集、数据清洗到数据落地的一套工具&#xff0c;主要用于学术研究目的。 安装 安装手册见…

在 macOS 上,用命令行连接 MySQL(/usr/local/mysql/bin/mysql -u root -p)

根据你提供的文件内容&#xff0c;MySQL 的安装路径是 /usr/local/mysql。要直接使用 mysql 命令&#xff0c;你需要找到 mysql 可执行文件的路径。 在 macOS 上&#xff0c;mysql 客户端通常位于 MySQL 安装目录的 bin 子目录中。因此&#xff0c;完整的路径应该是&#xff1…

【QT】: 初识 QWidget 控件 | QWidget 核心属性(API) | qrc 文件

&#x1f525; 目录 1. 控件概述 控件体系的发展阶段 2. QWidget 核心属性 2.1 核心属性概览2.2 用件可用&#xff08;Enabled&#xff09; 2.3 坐标系&#xff08;Geometry&#xff09; **实例 1: 控制按钮的位置**实例 2: 表白 程序 2.4 窗口标题&#xff08;windowTiltle&a…

通过外部链接启动 Flutter App(详细介绍及示例)

通过外部链接启动 Flutter App&#xff08;firebase_dynamic_links 和 app_links&#xff09; 详细介绍 通过外部链接启动flutter App 的使用及示例 在我们的APP中&#xff0c;经常有点击链接启动并进入APP的需求&#xff08;如果未安装跳转到应用商店&#xff09;。Android通…

git操作(Windows中GitHub)

使用git控制GitHub中的仓库版本&#xff0c;并在Windows桌面中创建与修改代码&#xff0c;与GitHub仓库进行同步。 创建自己的GitHub仓库 创建一个gen_code实验性仓库用来学习和验证git在Windows下的使用方法&#xff1a; gen_code仓库 注意&#xff0c;创建仓库时不要设置…

MySQL DCL 数据控制

文章目录 1.新建用户2.删除用户3.用户授权4.撤销用户权限5.查看用户权限6.修改用户密码7.权限类型参考文献 1.新建用户 连接到 MySQL 服务器后&#xff0c;管理员或特权用户可以使用 CREATE USER 语句创建新用户。 CREATE USER usernamehost IDENTIFIED BY password;-- 示例 …

python爬虫爬取淘宝商品比价||淘宝商品详情API接口

最近在学习北京理工大学的爬虫课程&#xff0c;其中一个实例是讲如何爬取淘宝商品信息&#xff0c;现整理如下&#xff1a; 功能描述&#xff1a;获取淘宝搜索页面的信息&#xff0c;提取其中的商品名称和价格 探讨&#xff1a;淘宝的搜索接口 翻页的处理 技术路线:requests…

【Vim Masterclass 笔记13】第 7 章:Vim 核心操作之——文本对象与宏操作 + S07L28:Vim 文本对象

文章目录 Section 7&#xff1a;Text Objects and MacrosS07L28 Text Objects1 文本对象的含义2 操作文本对象的基本语法3 操作光标所在的整个单词4 删除光标所在的整个句子5 操作光标所在的整个段落6 删除光标所在的中括号内的文本7 删除光标所在的小括号内的文本8 操作尖括号…

深度学习 Pytorch 张量的索引、分片、合并以及维度调整

张量作为有序的序列&#xff0c;也是具备数值索引的功能&#xff0c;并且基本索引方法和python原生的列表、numpy中的数组基本一致。 不同的是&#xff0c;pytorch中还定义了一种采用函数来进行索引的方式。 作为pytorch中的基本数据类型&#xff0c;张量既具备了列表、数组的基…

强推未发表!3D图!Transformer-LSTM+NSGAII工艺参数优化、工程设计优化!

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Transformer-LSTMNSGAII多目标优化算法&#xff0c;工艺参数优化、工程设计优化&#xff01;&#xff08;Matlab完整源码和数据&#xff09; Transformer-LSTM模型的架构&#xff1a;输入层&#xff1a;多个变量作…

SpringCloud系列教程:微服务的未来(十一)服务注册、服务发现、OpenFeign快速入门

本篇博客将通过实例演示如何在 Spring Cloud 中使用 Nacos 实现服务注册与发现&#xff0c;并使用 OpenFeign 进行服务间调用。你将学到如何搭建一个完整的微服务通信框架&#xff0c;帮助你快速开发可扩展、高效的分布式系统。 目录 前言 服务注册和发现 服务注册 ​编辑 …

跨境电商使用云手机用来做什么呢?

随着跨境电商的发展&#xff0c;越来越多的卖家开始尝试使用云手机来协助他们的业务&#xff0c;这是因为云手机具有许多优势。那么&#xff0c;具体来说&#xff0c;跨境电商使用云手机可以做哪些事情呢&#xff1f; &#xff08;一&#xff09;实现多账号登录和管理 跨境电商…

一体机cell服务器更换内存步骤

一体机cell服务器更换内存步骤&#xff1a; #1、确认grdidisk状态 cellcli -e list griddisk attribute name,asmmodestatus,asmdeactivationoutcome #2、offline griddisk cellcli -e alter griddisk all inactive #3、确认全部offline后进行关机操作 shutdown -h now #4、开…

“AI开放式目标检测系统:开启智能识别新时代

嘿&#xff0c;朋友们&#xff01;今天咱们来聊聊一个超酷炫的技术——AI开放式目标检测系统。这可不是什么高大上、遥不可及的玩意儿&#xff0c;它已经悄悄地走进了我们的生活&#xff0c;改变着我们对世界的认知和互动方式呢。 先来说说&#xff0c;什么是AI开放式目标检测系…