React 前端框架1

一、React 简介

(一)什么是 React

React 是一个用于构建用户界面的 JavaScript 库,由 Facebook 开源并维护。它采用了组件化的开发思想,允许开发者将复杂的 UI 拆分成一个个独立、可复用的小组件,就如同搭积木一般,通过组合这些 “积木”(组件)来构建出完整且功能丰富的页面或者应用程序。例如,一个电商网站中,商品展示的卡片、导航栏、侧边栏等都可以分别作为独立的组件进行开发,然后灵活地组装在一起。

(二)React 的特点

  • 高效性
    • React 使用了虚拟 DOM(Virtual DOM)技术。简单来说,虚拟 DOM 是真实 DOM 的一种轻量级的 JavaScript 表示形式。当组件的状态或者属性发生变化时,React 会先在虚拟 DOM 上进行相应的更新操作,然后通过对比新旧虚拟 DOM 的差异(这个过程叫 Diffing),只将有变化的部分精准地更新到真实 DOM 中,而不是像传统方式那样直接操作整个真实 DOM,大大减少了不必要的 DOM 操作,从而提高了页面的渲染效率,让应用的交互体验更加流畅。
  • 组件化与复用性
    • 组件是 React 的核心概念,每个组件都有自己独立的逻辑、样式和结构。我们可以方便地在不同的地方复用已经编写好的组件,减少了重复代码的编写。比如,在多个页面都需要使用相同样式和功能的按钮组件时,只需要创建一次这个按钮组件,然后在其他地方按需引入使用即可,这极大地提高了开发效率,也方便后期的维护和扩展。
  • 单向数据流
    • React 遵循单向数据流的原则,数据从父组件流向子组件,子组件不能直接修改父组件传递过来的数据,只能通过调用父组件传递过来的回调函数等方式来告知父组件数据需要变更,这种清晰的数据流向使得组件之间的数据交互更加可预测,易于理解和调试,能有效避免复杂应用中数据混乱的问题。

二、React 环境搭建

(一)使用 Create React App 工具(推荐新手使用)

Create React App 是 Facebook 官方提供的一个脚手架工具,它可以帮助我们快速搭建一个基于 React 的项目开发环境,免去了繁琐的配置过程。

  • 安装步骤
    1. 首先确保你的电脑已经安装了 Node.js(因为 Create React App 依赖于 Node.js 的包管理工具 npm 或者 yarn)。
    2. 打开命令行终端,输入以下命令来创建一个新的 React 项目(这里以项目名为 my-react-app 为例):
      使用 npm:npx create-react-app my-react-app
      或者使用 yarn:yarn create react-app my-react-app
    3. 等待安装过程完成后,进入项目目录:cd my-react-app
    4. 启动项目开发服务器,在命令行中输入:npm start(使用 npm 时)或者 yarn start(使用 yarn 时),此时浏览器会自动打开一个页面,显示 React 的默认欢迎界面,就表示项目搭建成功啦,可以开始进行 React 开发了。

(二)手动配置 React 项目(适合有一定经验的开发者)

如果你想要对项目的配置有更多的掌控权,也可以选择手动配置 React 项目环境,不过这相对来说步骤会复杂一些,涉及到配置 webpack(用于模块打包)、Babel(用于将 ES6 等新语法编译成浏览器能识别的代码)等工具,以下是大致的步骤概述:

  1. 创建项目目录,比如 my-manual-react-app,进入该目录后初始化一个 npm 项目(通过 npm init -y 命令)。
  2. 安装 React 和 React DOM 库:npm install react react-dom
  3. 安装 webpack、webpack-cli 以及相关的 loader(比如用于处理 CSS、JavaScript 等文件的 loader):例如,npm install webpack webpack-cli style-loader css-loader babel-loader @babel/core @babel/preset-env @babel/preset-react -S
  4. 配置 webpack 的配置文件(webpack.config.js),定义入口文件、输出路径、模块规则等内容。
  5. 配置 Babel 的配置文件(.babelrc),指定要使用的预设(presets),比如 @babel/preset-env 用于处理 ES6 等新的 JavaScript 语法,@babel/preset-react 用于处理 React 的 JSX 语法等。
  6. 创建 HTML 文件作为项目的入口页面,在其中引入打包后的 JavaScript 文件等,然后通过命令行运行 webpack 命令来进行项目的打包构建等操作。

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

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

相关文章

[CISCN 2019华东南]Web11

[CISCN 2019华东南]Web11 给了两个链接但是都无法访问 这里我们直接抓包试一下 我们插入X-Forwarded-For:127.0.0.1 发现可以修改了右上角的IP地址,从而可以进行注入 {$smarty.version} 查看版本号 if标签执行PHP命令 {if phpinfo()}{/if} 查看协议 {if system(…

使用SpringBoot实现邮件发送(QQ邮箱为例)

使用SpringBoot实现邮件发送(QQ邮箱为例) 一、获取授权码 1.首先进入qq邮箱找到设置 2、账号栏目,找到POP3/SMTP服务 并开启服务 3、获取授权码 二、SpringBoot集成邮件发送 1.创建邮件发送服务类 package com.example.demo.service;import org.springframework…

hint: Updates were rejected because the tip of your current branch is behind!

问题 本地仓库往远段仓库推代码时候提示: error: failed to push some refs to 192.168.2.1:java-base/java-cloud.git hint: Updates were rejected because the tip of your current branch is behind! refs/heads/master:refs/heads/master [rejected] (…

基于BM1684的AI边缘服务器-模型转换,大模型一体机(二)

目标追踪 注:所有模型转换都是在docker环境中的 先进入docker 这里我们是要在docker环境里编译的,所以先进入docker :~/tpu-nntc# docker run -v $PWD/:/workspace -it sophgo/tpuc_dev:latest初始化环境 root2bb02a2e27d5:/workspace/tpu-nntc# s…

ROS基本框架2——在ROS开发中创建并使用自定义消息(C++版本)

ROS基本框架2——在ROS开发中创建并使用自定义消息(C++版本) code review! 参考笔记 1.ROS基本框架1——编写简单的发布者和订阅者(C++和Python版本) 2.ROS基本框架2——在ROS开发中创建并使用自定义消息(C++版本) 文章目录 ROS基本框架2——在ROS开发中创建并使用自定义…

实例讲解MATLAB绘图坐标轴标签旋转

在进行绘图时需要在图片上添加上做标轴的标签,但是当数据量比较多时,例如一天24小时的数据,这时把每个小时显示在左边轴的标签上,文字内容放不下,因此需要将坐标轴标签旋转一定的角度,这样可以更好在图形上…

Spark 内存管理机制

Spark 内存管理 堆内内存和堆外内存 作为一个 JVM 进程,Executor 的内存管理建立在 JVM(最小为六十四分之一,最大为四分之一)的内存管理之上,此外spark还引入了堆外内存(不在JVM中的内存),在spark中是指不…

为什么爱用低秩矩阵

目录 为什么爱用低秩矩阵 一、定义与性质 二、区别与例子 为什么爱用低秩矩阵 我们更多地提及低秩分解而非满秩分解,主要是因为低秩分解在数据压缩、噪声去除、模型简化和特征提取等方面具有显著的优势。而满秩分解虽然能够保持数据的完整性,但在实际应用中的场景较为有限…

Dify+Docker

1. 获取代码 直接下载 (1)访问 langgenius/dify: Dify is an open-source LLM app development platform. Difys intuitive interface combines AI workflow, RAG pipeline, agent capabilities, model management, observability features and more, …

Android Studio的AI工具插件使用介绍

Android Studio的AI工具插件使用介绍 一、前言 Android Studio 的 AI 工具插件具有诸多重要作用,以下是一些常见的方面: 代码生成与自动补全 代码优化与重构 代码解读 学习与知识获取 智能搜索与资源推荐实际使用中可以添加注释,解读某段代…

DOCKER学习总结

这里写目录标题 一、Docker安装1.1 在线安装1.2 离线安装安装配置启动服务 1.3 配置镜像1.4 Docker启动相关命令 二、Docker三大核心概念2.1 镜像2.2 容器2.3 仓库2.3.1 公有仓库2.3.2 私有仓库 二、容器与虚拟机比较 一、Docker安装 1.1 在线安装 查看是否安装dockeryum lis…

深入浅出体验AI生图产品Dall-E

DALL-E是由OpenAI开发的一种革命性的AI图像生成工具,能够根据文本描述生成图像。它的名字灵感来源于著名画家萨尔瓦多达利(Salvador Dal)和皮克斯动画电影中的角色瓦力(WALL-E),这暗示了其在艺术创造力与技…

OpenCV_Code_LOG

孔洞填充 void fillHole(const Mat srcBw, Mat &dstBw) {Size m_Size srcBw.size();Mat TempMat::zeros(m_Size.height2,m_Size.width2,srcBw.type());//延展图像srcBw.copyTo(Temp(Range(1, m_Size.height 1), Range(1, m_Size.width 1)));cv::floodFill(Temp, Point(…

YOLOv11改进,YOLOv11添加SAConv可切换空洞卷积,二次创新C3k2结构

摘要 作者提出的技术结合了递归特征金字塔和可切换空洞卷积,通过强化多尺度特征学习和自适应的空洞卷积,显著提升了目标检测的效果。 理论介绍 空洞卷积(Atrous Convolution)是一种可以在卷积操作中插入“空洞”来扩大感受野的技术,更有效地捕捉到图像中的大范围上下文…

2024信创数据库TOP30之华为Gauss DB

近日,由DBC联合CIW/CIS共同发布的“2024信创数据库TOP30”榜单正式揭晓,汇聚了国内顶尖的数据库企业及其产品,成为展示中国信创领域技术实力与发展潜力的重要平台。在这份榜单中,华为的GaussDB凭借其卓越的技术实力、广泛的行业应…

【Spring源码核心篇-07】spring事物传播机制的流程和原理

Spring源码核心篇整体栏目 内容链接地址【一】Spring的bean的生命周期https://zhenghuisheng.blog.csdn.net/article/details/143441012【二】深入理解spring的依赖注入和属性填充https://zhenghuisheng.blog.csdn.net/article/details/143854482【三】精通spring的aop的底层原…

Redis实现限量优惠券的秒杀

核心&#xff1a;避免超卖问题&#xff0c;保证一人一单 业务逻辑 代码步骤分析 全部代码 Service public class VoucherOrderServiceImpl extends ServiceImpl<VoucherOrderMapper, VoucherOrder> implements IVoucherOrderService {Resourceprivate ISeckillVoucher…

.NET8/.NETCore 依赖注入:自动注入项目中所有接口和自定义类

.NET8/.NETCore 依赖接口注入&#xff1a;自动注入项目中所有接口和自定义类 目录 自定义依赖接口扩展类&#xff1a;HostExtensions AddInjectionServices方法GlobalAssemblies 全局静态类测试 自定义依赖接口 需要依赖注入的类必须实现以下接口。 C# /// <summary>…

搭建一个基于Web的文档管理系统,用于存储、共享和协作编辑文档

搭建一个基于Web的文档管理系统&#xff0c;用于存储、共享和协作编辑文档 本项目采用以下架构&#xff1a; NFS服务器: 负责存储文档资料。Web服务器: 负责提供文档访问和编辑功能。SELinux: 负责权限控制&#xff0c;确保文档安全。Git服务器: 负责存储文档版本历史&#x…

gitee:创建仓库,存入本地文件至仓库

一、git下载 git:下载与安装-CSDN博客https://blog.csdn.net/weixin_46001736/article/details/144107485?sharetypeblogdetail&sharerId144107485&sharereferPC&sharesourceweixin_46001736&spm1011.2480.3001.8118 二、创建仓库 1、主页面->右上角新增…