React 简介以及 jsx 语法规则的学习

- React 简介

  React 是一个将数据渲染成 HTML视图的开源 javascript 库

  1. 用于动态构建用户界面的 JS 库(只关注于视图)

  2. 由 Facebook 开源

- 为什么要学 React 呢?

  1. 原生 JS 操作 DOM 繁琐、效率低(DOM-API操作 UI)

  2. 使用 JS 直接操作 DOM,浏览器会进行大量的重绘重排

  3. 原生 JS 没有 组件化 编码方案,代码复用率低

- React 的特点

  1. 采用 组件化 模式、声明式编码,提高开发效率及组件复用率

   2. 在 React Native中可以使用 React 语法进行 移动端开发

   3. 使用虚拟DOM + 优秀的 Diffing 算法,尽量减少与真实DOM的交互

- React 高效的原因

  1. 使用虚拟 DOM ,不总是直接操作页面真实 DOM

  2. DOM Diffing 算法,最小化页面重绘

- 原生JS实现视图

- React 实现视图

 

 

 - 学习 React 之前需要掌握的 JS 基础知识

  判断 this 的指向、class(类)、ES6语法规范、npm包管理器、原型、原型链、数组常用方法、模块化

- React 的相关 js 库

  1. react.js:React 核心库

  2. react-dom.js:提供操作 DOM 的 react 扩展库

  3. babel.min.js:解析 JSX 语法代码转为 JS 代码的库

- React 的基本使用

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- 创建虚拟 DOM 的两种方式

  1. 纯 js 方式(一般不用)

 

 

  

 

  2. jsx 方式

 

 

 

 

 

 

 - 虚拟 DOM 与 真实 DOM

  虚拟 DOM:

 

   

 

 

 

 

 

 

  真实 DOM:

 

   

 

 

 

 

 

 

 

关于虚拟DOM:

    1. 本质是 Object 类型的对象(一般对象)

    2. 虚拟 DOM 比较 "轻",真实 DOM 比较 "重",因为虚拟 DOM 是 React 内部在用,无需真实 DOM 上那么多的属性

    3. 虚拟 DOM 最终会被 React 转换为 真实 DOM,呈现在页面上。

- jsx 语法规则:

  1. 定义虚拟 DOM 时,不要写引号

  2. 标签中混入 JS 表达式时要用 {}

  3. 样式的类名指定不要用 class,要用 className

  4. 内联样式,要用 style={{key:value}} 的形式去写

  5. 只有一个根标签

  6. 标签必须闭合

  7. 标签首字母

    (1)若小写字母开头,则将改标签转为html中同名元素,若html中无该标签对应的同名元素,则报错

    (2)若大写字母开头,react 就去渲染对应的组件,若组件没有定义,则报错

 

 

 

 

 

 

 

 

 

 

 - 一定要注意区分 【js语句代码】 和 【js表达式】

  1. 表达式:一个表达式会产生一个值,可以放在任何一个需要值得地方

    下面这些都是表达式:

    (1)a

    (2)a + b

    (3)demo(1)

    (4)arr.map()

    (5)function test() {}

  2. 语句(代码):

    下面这些都是语句(代码):

    (1)if(){}

    (2)for(){}

    (3)switch(){case: xxxx}

 

 - 模块与组件、模块化与组件化的理解

  1. 模块

    (1)理解: 向外提供特定功能的 js 程序,一般就是一个 js 文件

    (2)为什么要拆成模块:随着业务逻辑增加,代码越来越多且复杂

    (3)作用:复用 js,简化 js 的编写,提高 js 运行效率

  2. 组件

    (1)理解:用来实现局部功能效果的代码和资源的集合(html、css、js、image 等等)

    (2)为什么:一个界面的功能更复杂

    (3)作用:复用编码,简化项目编码,提高运行效率

  3. 模块化

    当应用的 js 都以模块来编写的,这个应用就是一个模块化的应用

  4. 组件化

    当应用是以多组件的方式实现,这个应用就是一个组件化的应用

- 函数式组件

 

  

 

 

  JSX转换为原始JS如下:jsx 是使用严格模式的,this 不指向 window,jsx 只是 js 的一个语法糖

 

 

 

posted @ 2021-10-06 14:00  我就尝一口  阅读(75)  评论(0编辑  收藏  举报