最近也是花费了一些时间去学习了一下react,在学习react的过程中,建议大家熟悉记住一句话,就是react走的是单向数据流,其实不光react 包括js,vue全部走的都是单向数据流,只不过vue中有一个双向绑定,但是它的底层原理是通过Object.defineProperty()方法,其实也是单向数据流,而js它是单线程的,虽然并不代表js引擎线程只有一个。js引擎有多个线程,一个主线程,其它的后台配合主线程。
首先在学习react之前 我们要先来对react有一个初步的理解:
- 什么是模块化:是从代码的角度来进行分析的;把一些可复用的代码,抽离为单个的模块;便于项目的维护和开发;
- 什么是组件化: 是从 UI 界面的角度 来进行分析的;把一些可服用的UI元素,抽离为单独的组件;便于项目的维护和开发;
- 组件化的好处:随着项目规模的增大,手里的组件越来越多;很方便就能把现有的组件,拼接为一个完整的页面;
- Vue是如何实现组件化的: 通过 .vue 文件,来创建对应的组件;
- template 结构
- script 行为
- style 样式
5.React如何实现组件化:大家注意,React中有组件化的概念,但是,并没有像vue这样的组件模板文件;React中,一切都是以JS来表现的;因此要学习React,JS要合格;ES6 和 ES7 (async 和 await) 要会用
HTML、CSS、JS
html展示网页
css对网页进行修饰
js 对网页做一些交互
大型网站和小型网站经常出现的问题
- 开发问题 页面多不好管理、为了提高开发效率
- 维护问题
- 访问效率问题
为了解决以上三种问题,我们后期研发出 单页面应用(SPA) 只返回一个html 其他用js css实现、但是这样只提高了访问效率,并没有提高维护效率
JavaScript 分为三个部分:
- ECMAScript (ES5、ES6)(一种语法标准):变量、函数、对象(String,Date,Array)(对字符串,对时间,对数组的处理)
- WebAPI(接口)(也可以说是浏览器本身提供的一些方法供我们进行操作):
- BOM(Browser Object Model) window、history、location
浏览器对象模型(BOM)
浏览器对象模型 把整个浏览器看成一个对象 以面向对象的方式进行操作 面相window 、history 、 location 进行操作
- Dom (Document Object Model)
文档对象模型 整个html文件 叫document 、 element (标签元素)
文档对象模型(DOM)
DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML或XML页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。
IE 3.0 和 Netscape Navigator 3.0 提供了一种特性 - BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作。使用 BOM,开发者可以移动窗口、改变状态栏中的文本以及执行其他与页面内容不直接相关的操作。
在ES5版本因为无法解决函数抛出、以及在js文件中写html文件
虽然ES6以后解决了函数抛出import,但还是没有办法解决在js中写html文件的问题,所以facebook 发明出了react
ECMAScript6(简称es6)
import 抛出文件
在React中 中只有一个html和js
- jsx ,运行在js中的xml(拓展性标记语言)
- 只要在js文件中引入React模块 ,就可以直接写HTML,即JSX
- xml规范,必须要双标签,单标签要加斜杠
但是呢,一会儿是标签 一会儿是括号 这种方式 可读性比较差 ,所以react发明出了以标签的方式引入模块
简称 把类当做一个函数的集合
并且通过继承的方式继承React.Component 把类继承为一个组件
对开发的方式进行了升级