React开发依赖分析

1. React小案例:

  • 在界面显示一个文本:Hello World
  • 点击按钮后,文本改为为:Hello React

2. React开发依赖

  • 2.1. 开发React必须依赖三个库:
    • 2.1.1. react: 包含react所必须的核心代码
    • 2.1.2. react-dom: `react渲染在不同平台所需要的核心代码
    • 2.1.3. babel: 将jsx转换成React代码的工具
  • 2.2. 第一次接触React会被它繁琐的依赖搞蒙, 居然依赖这么多东西
    • 2.2.1. 对于Vue来说,我们只是依赖一个vue.js文件即可, 但是react居然要依赖三个包。
    • 2.2.2. 其实呢, 这三个库是各司其职的, 目的就是让每一个库只单纯做自己的事情;
    • 2.2.3. 在React的0.14版本之前是没有react-dom这个概念的, 所有功能都包含在react里;
  • 2.3. 为什么要进行拆分呢?原因就是react-native
    - 2.3.1. react包中包含了react web和react-native所共同拥有的核心代码
    - 2.3.2. react-dom针对webnative所完成的事情不同:
    • 2.3.2.1. web端react-dom会将jsx最终渲染成真实的DOM,显示在浏览器中
    • 2.3.2.2. native端react-dom会将jsx最终渲染成原生的控件(比如Android中的ButtoniOS中的UIButton)。

3. Babel和React的关系

  • 3.1. 表格关系如下:
    ES6+ babel工具
    React JSX语法 ----------> 普通的Javascript ----------> 直接运行在浏览器

  • 3.2. Babel是什么呢?

    • Babel, 又名 Babel.js
    • 是目前前端使用非常广泛的编译器、转移器
    • 比如当下很多浏览器并不支持ES6的语法,但是确实ES6的语法非常的简洁和方便,开发时希望使用它
    • 那么编写源码时就可以使用ES6来编写,之后通过Babel工具,将ES6转成大多数浏览器都支持的ES5的语法
    • 3.3. React和Babel的关系:
      • 默认情况下开发React其实可以不使用babel
      • 但是前提是自己使用React.createElement来编写源代码, 它编写的代码非常的繁琐和可读性差。
      • 那么就可以直接编写jsx (JavaScript XML) 的语法,并且让 babel帮助我们转换成React.createElement
      • 后续还会详细讲到;
      • 3.4. 项目打包时是不会打包babel的代码的。

4. 编写第一个React程序

  • 4.1. 添加依赖
    • 4.1.1. CDN引入
        <!-- CDN引入 --><!-- crossorigin: 目的是为了拿到跨域脚本的错误信息 --><script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script><script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script><!-- babel --><script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
      
    • 4.1.2. 下载引入
    • 4.1.3. npm下载引入(脚手架)
  • 4.2. 编写React代码(jsx语法)
     // 必须添加type="text/babel", 作用是可以让babel解析jsx语法<script type="text/babel">// 2. 编写React代码(jsx语法)// jsx语法(浏览器不识别) -> (转变成)普通的Javascript代码 -> 使用babel(转变成js代码)// 渲染Hello World// React18之前: ReactDOM.render()// ReactDOM.render(<h2>hello World</h2>, document.querySelector('#root'))// React18之后:const root = ReactDOM.createRoot(document.querySelector('#root'))root.render(<h2>hello World</h2>)const app = ReactDOM.createRoot(document.querySelector('#app'))app.render(<h2>你好啊 李银河</h2>)</script>
    
  • 4.3. 完整代码如下:
    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
    </head>
    <body><!-- 1.添加react依赖1.1. 三个依赖包:- react: 包含react所必须的核心代码- react-dom: react渲染在不同平台所需要的核心代码- babel: 将jsx转换成React代码的工具1.2. 引入的方式:- CDN引入- 下载引入- npm下载引入(脚手架)--><div id="root"></div><div id="app"></div><!-- CDN引入 --><!-- crossorigin: 目的是为了拿到跨域脚本的错误信息 --><script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script><script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script><!-- babel --><script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script><!-- 必须添加type="text/babel", 作用是可以让babel解析jsx语法 --><script type="text/babel">// 2. 编写React代码(jsx语法)// jsx语法(浏览器不识别) -> (转变成)普通的Javascript代码 -> 使用babel(转变成js代码)// 渲染Hello World// React18之前: ReactDOM.render()// ReactDOM.render(<h2>hello World</h2>, document.querySelector('#root'))// React18之后:const root = ReactDOM.createRoot(document.querySelector('#root'))root.render(<h2>hello World</h2>)const app = ReactDOM.createRoot(document.querySelector('#app'))app.render(<h2>你好啊 李银河</h2>)</script></body>
    </html>
    

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

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

相关文章

工具(一)Cursor

目录 一、介绍 二、如何打开文件 1、从idea跳转文件 2、单独打开项目 三、常见使用 1、Chat 窗口 Ask 对话模式 1.1、使用技巧 1.2 发送和使用 codebase 发送区别 1.3、问题快速修复 2、Chat 窗口 Agent 对话模式 2.1、agent模式功能 2.2、Chat 窗口回滚&撤销 2.3…

Prompt编写规范指引

1、&#x1f4d6; 引言 随着人工智能生成内容&#xff08;AIGC&#xff09;技术的快速发展&#xff0c;越来越多的开发者开始利用AIGC工具来辅助代码编写。然而&#xff0c;如何编写有效的提示词&#xff08;Prompt&#xff09;以引导AIGC生成高质量的代码&#xff0c;成为了许…

自我学习----绘制Mark点

在PCB的Layout过程中我们需在光板上放置Mark点以方便生产时的光学定位&#xff08;三点定位&#xff09;&#xff1b;我个人Mark点绘制步骤如下&#xff1a; layer层&#xff1a;1.放置直径1mm的焊盘&#xff08;无网络连接&#xff09; 2.放置一个圆直径2mm&#xff0c;圆心与…

2025年财税行业拓客破局:小蓝本财税版AI拓客系统助力高效拓客

2025年&#xff0c;在"金税四期"全面实施的背景下&#xff0c;中国财税服务市场迎来爆发式增长&#xff0c;根据最新的市场研究报告&#xff0c;2025年中国财税服务行业产值将达2725.7亿元。然而&#xff0c;行业高速发展的背后&#xff0c;80%的财税公司却陷入获客成…

双向链表,对其实现头插入,尾插入以及遍历倒序输出

1.创建一个节点&#xff0c;并将链表的首节点返回创建一个独立节点&#xff0c;没有和原链表产生任何关系#include "head.h"typedef struct Node { int num; struct Node*pNext; struct Node*pPer; }NODE;后续代码&#xff1a;NODE*createNode(int value) {NODE*new …

2025年自动化工程与计算机网络国际会议(ICAECN 2025)

2025年自动化工程与计算机网络国际会议&#xff08;ICAECN 2025&#xff09; 2025 International Conference on Automation Engineering and Computer Networks一、大会信息会议简称&#xff1a;ICAECN 2025 大会地点&#xff1a;中国柳州 审稿通知&#xff1a;投稿后2-3日内通…

12.Origin2021如何绘制误差带图?

12.Origin2021如何绘制误差带图?选中Y3列→点击统计→选择描述统计→选择行统计→选择打开对话框输入范围选择B列到D列点击输出量→勾选均值和标准差Control选择下面三列点击绘图→选择基础2D图→选择误差带图双击图像→选择符号和颜色点击第二个Sheet1→点击误差棒→连接选择…

如何使用API接口获取淘宝店铺订单信息

要获取淘宝店铺的订单信息&#xff0c;您需要通过淘宝开放平台(Taobao Open Platform, TOP)提供的API接口来实现。以下是详细步骤&#xff1a;1. 注册淘宝开放平台账号访问淘宝开放平台注册开发者账号并完成实名认证创建应用获取App Key和App Secret2. 申请API权限在"我的…

【Kiro Code 从入门到精通】重要的功能

一、Kiro 是什么&#xff1f; Kiro 是一款智能型集成开发环境&#xff08;IDE&#xff09;&#xff0c;借助规格说明&#xff08;specs&#xff09;、向导&#xff08;steer&#xff09;、钩子&#xff08;hooks&#xff09;帮助你高效完成工作。 二、Specs 规格说明 规范&…

直播间里的酒旅新故事:内容正在重构消费链路

文/李乐编辑/子夜今年暑期&#xff0c;旅游的热浪席卷全国。机场、火车站人潮涌动&#xff0c;电子屏上滚动的航班信息与检票口前的长队交织成繁忙的出行图景&#xff0c;酒店预订量也在这股热潮中节节攀升。连线 Insight关注到&#xff0c;今年的暑期游有了一些新变化&#xf…

50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | VerifyAccountUi(验证码组件)

&#x1f4c5; 我们继续 50 个小项目挑战&#xff01;—— VerifyAccountUi组件 仓库地址&#xff1a;https://github.com/SunACong/50-vue-projects 项目预览地址&#xff1a;https://50-vue-projects.vercel.app/ 使用 Vue 3 的 <script setup> 语法结合 Tailwind CS…

AbstractAuthenticationToken 认证流程中​​认证令牌的核心抽象类详解

AbstractAuthenticationToken 认证流程中​​认证令牌的核心抽象类详解在 Spring Security 中&#xff0c;AbstractAuthenticationToken 是 Authentication 接口的​​抽象实现类​​&#xff0c;其核心作用是为具体的认证令牌&#xff08;如用户名密码令牌、JWT 令牌等&#x…

小程序视频播放,与父视图一致等样式设置

初始设置的代码&#xff1a;WXML的代码<view class"card-wrapper"> <!-- 视频播放容器&#xff08;默认隐藏&#xff09; --> <view class"video-container" wx:if"{{isPlaying}}"> <video id"cardVideo" class&…

Kafka——关于主题管理

引言在Kafka的世界中&#xff0c;主题&#xff08;Topic&#xff09;是消息的基本组织单位&#xff0c;类似于文件系统中的"文件夹"——所有消息都按照主题分类存储&#xff0c;生产者向主题写入消息&#xff0c;消费者从主题读取消息。主题的管理是Kafka运维的基础&…

【VLLM】VLLM使用

一 、安装 二、启动入口 VLLM 提供了多种入口方式启动模型&#xff0c;以适应不同的使用场景&#xff08;如命令行交互、API 服务、自定义集成等&#xff09;。除了最常用的 openai.api_server&#xff08;OpenAI 兼容 API 服务&#xff09;&#xff0c;还有以下主要入口&#…

为Github Copilot创建自定义指令/说明/注意事项

GitHub Copilot 是一个强大的 AI 编程助手&#xff0c;通过合理配置自定义指令&#xff0c;可以让它更好地理解和遵循项目特定的编码规范&#xff0c;省的每次提问时输入重复提示语。 目录 方法一&#xff1a;项目级别指令文件&#xff08;推荐&#xff09;方法二&#xff1a…

信创厚知联盟会长兼创始人莅临绿算技术

2025年7月29日&#xff0c;信创厚知联盟会长兼创始人王杲一行考察广东省绿算技术有限公司&#xff0c;重点调研其在智算中心存储与AI算力协同领域的创新成果。此次交流标志着双方在信创产业生态合作上迈出重要一步&#xff0c;为国产高端高性能全闪存存储与智算基础设施的融合发…

RAG面试内容整理-Prompt Engineering 在 RAG 中的作用

Prompt Engineering(提示工程)指为生成模型精心设计输入提示,以引导模型产生所需的输出。在RAG系统中,prompt设计对充分利用检索到的知识至关重要。因为生成器(通常是LLM)接收到的不仅有用户问题,还有检索的文档内容,我们需要通过提示明确告诉模型如何使用这些信息。例…

【计算机网络】5传输层

传输层是面向通信的最高层&#xff0c;也是用户功能的最底层。 传输层仅存在于主机中&#xff0c;路由器等中间设备只用到下三层&#xff08;无传输层&#xff09;。传输层对上层应用隐藏了底层网络的复杂细节&#xff08;比如数据怎么路由、网络怎么连接等&#xff09;。对应用…

SecureCRT连接密钥交换失败

SecureCRT连接密钥交换失败问题描述&#xff1a;问题分析&#xff1a;解决方案&#xff1a;问题描述&#xff1a; SecureCRT6.7连接银河麒麟操作系统v10版本&#xff0c;报错如下&#xff1a; key exchange failed 密钥交换失败 no compatible key exchange method. The serv…