【React】新建React项目

devtools/2025/1/17 4:54:52/

目录

  • 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.ppmy.cn/devtools/151175.html

相关文章

Redis雪崩以及解决方法

概述&#xff1a; Redis中大量缓存数据在同一时间过期&#xff08;失效&#xff09;或者Redis故障宕机时&#xff0c;如果此时有大量的用户请求&#xff0c;都无法在Redis中处理&#xff0c;于是全部请求都直接访问数据库&#xff0c;从而导致数据库的压力骤增&#xff0c;严重…

构建高效的进程池:深入解析C++实现

构建高效的进程池&#xff1a;深入解析C实现 在高性能计算和服务器应用中&#xff0c;进程池&#xff08;Process Pool&#xff09;是一种重要的设计模式。它通过预先创建和维护一定数量的子进程来处理大量的任务请求&#xff0c;从而避免频繁地创建和销毁进程带来的开销。本文…

Ubuntu无法进入图像化界面

目录 1.情况介绍 2.安装ubuntu-session 3.重装显卡驱动 4.后记 1.情况介绍 使用timeshift创建系统快照的时候中途暂停&#xff0c;然后重启系统&#xff0c;系统无法进入图形化界面&#xff0c;出错的现象如下。 2.安装ubuntu-session 键盘操作&#xff1a;CtrlAltF2&#…

4种革新性AI Agent工作流设计模式全解析

导读:AI Agent是指能够在特定环境中自主执行任务的人工智能系统,不仅接收任务,还自主制定和执行工作计划,并在过程中不断自我评估和调整,类似于人类在创造性任务中的思考和修正过程。AI Agent的四种关键设计模式是实现高效执行复杂任务的基础,共同构成了AI Agent的能力框…

软件测试预备知识⑤—搭建 DNS 服务器

在软件测试领域&#xff0c;有时候我们需要搭建一些特定的服务器环境来模拟真实的网络场景&#xff0c;以便更好地进行测试工作。DNS 服务器就是其中一个重要的组件&#xff0c;它负责将域名解析为对应的 IP 地址&#xff0c;使得我们能够通过域名访问各种网络资源。今天&#…

设计模式03:行为型设计模式之策略模式的使用情景及其基础Demo

1.策略模式 好处&#xff1a;动态切换算法或行为场景&#xff1a;实现同一功能用到不同的算法时和简单工厂对比&#xff1a;简单工厂是通过参数创建对象&#xff0c;调用同一个方法&#xff08;实现细节不同&#xff09;&#xff1b;策略模式是上下文切换对象&#xff0c;调用…

【后端面试总结】Golang可能的内存泄漏场景及应对策略

Golang可能的内存泄漏场景及应对策略 一、引言 Golang作为一种高性能、并发友好的编程语言&#xff0c;其内置的垃圾回收机制极大地简化了内存管理。然而&#xff0c;这并不意味着开发者可以完全忽视内存泄漏问题。在实际开发中&#xff0c;由于不当的资源管理、循环引用、以…

基于单片机的无线智能窗帘控制器的设计

摘 要 : 本文以单片机为控制核心 , 基于 PT2262/ 2272 无线收发模块 , 实现了窗帘的无线远程智能控制 . 该控制器通过高频无线收发模块实现了遥控窗帘的开合控制; 根据外部光线强弱实现自动开关窗帘 ; 根据设定时间自动完成开关过程; 通过语音播报当前环境温湿度信息以…