当前位置: 首页 > news >正文

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.dtcms.com/a/308014.html

相关文章:

  • TRAE 软件使用攻略
  • 快速搭建Node.js服务指南
  • python制作的软件工具安装包
  • c# net6.0+ 安装中文智能提示
  • 前端框架Vue3(二)——Vue3核心语法之OptionsAPI与CompositionAPI与setup
  • 超体积指标(Hypervolume Indicator,S 度量)详析
  • 【JMeter】性能测试脚本录制及完善
  • 辐射源定位方法简述
  • 【BUUCTF系列】[HCTF 2018]WarmUp1
  • 网络编程-IP
  • 计算机网络:什么是光猫
  • Hyperbrowser MCP:重新定义网页抓取与浏览器自动化的AI驱动工具
  • Solr升级9.8.0启动异常UnsupportedOperationException known Lucene classes
  • Tauri vs Electron 的全面对比
  • 生产管理升级:盘古IMS MES解锁全链路可控可溯,激活制造效率
  • LCM中间件入门(2):LCM核心实现原理解析
  • 牛客练习赛142 第四次忍界大战 并查集
  • 永磁同步电机无速度算法--直流误差抑制自适应二阶反推观测器
  • Gemini Fullstack LangGraph Quickstart(DeepSeek+Tavily版本)
  • 【React】diff 算法
  • Elasticsearch 索引及节点级别增删改查技术
  • 基于单片机胎压检测/锅炉蒸汽压力/气压检测系统
  • VBA代码解决方案第二十七讲:禁用EXCEL工作簿右上角的关闭按钮
  • 分布式ID方案(标记)
  • TDengine oss数据的导出和导入
  • 大数据岗位技能需求挖掘:Python爬虫与NLP技术结合
  • 学习Redis源码路径
  • 开发避坑短篇(12):达梦数据库TIMESTAMP字段日期区间查询实现方案
  • 打破数据质量瓶颈:用n8n实现30秒专业数据质量报告自动化
  • 【数据结构初阶】--二叉树选择题专辑