React  学习第一天-2018-07-21

本文介绍了React的基本概念,包括DOM与虚拟DOM的区别、Diff算法的工作原理、Webpack 4.x项目的搭建步骤,以及如何使用Babel支持ES6语法和JSX。此外,还详细讲解了React的安装、配置和基本使用方法。
摘要由CSDN通过智能技术生成

React  学习第一天

 

1.Dom 和虚拟Dom

Dom 是浏览器中实际存在的,虚拟Dom是框架中的,是利用JS代码来模拟DOM。

虚拟Dom 是实现页面的实时更新。

Dom树,一个网页的呈现过程,

1.浏览器请求,拿到代码,

2.浏览器在内存中解析DOM结构,并且在内存中渲染出一颗内存树

3.浏览器把DOM 树,呈现到页面上。

 

如何获取到新旧DOM 树,从而实现DOM树的对比。

1.浏览器中没有自带的相关API,

2.程序员可以手动模拟新旧两颗DOM树,这样就可以实现相关的对比,

用JS 对象模拟这个对象

<div id=”mydiv” title=”说实话”> 杰哥好帅</div>

//DOM叔

var div = {

tagName : 'div',

attrs : {

id : 'mydiv',

title : '说实话',

'data-index' :  '0'

},

childrens : ['杰哥很帅'],

{

tagName :'p',

attrs : {},

childrens :['这个是P标签']

}

}

什么是虚拟DOM树:  利用JS的对象形式,来模拟页面上DOM的嵌套关系,虚拟DOM是JS中的对象

程序员模拟的两颗新旧DOM 树,就是React 中DOM 树的概念,

React 中的虚拟DOM概念: 1. 本质,使用JS对象,来模拟DOM元素和相关嵌套关系,2.目的,实现页面元素的高效更新。

 

 

2.Diff 算法。different .对比前后相关的变化。before  和 after

2.1tree diff  新旧两颗DOM 树,逐层大体对比,

2.2 component diff  每一层中的组件对比,

2.3 element diff  每一层的元素对比

 

 

 

 

3.创建webpack 4.X项目

3.1 基本的相关流程

第一步:快速初始化一个项目,初始化命令:npm init  -y  初始化一个项目,

第二步:建立相关文件夹和目录。src 源代码目录  和dist  产品目录(发布好的产品放这个里面)

第三步: 创建index.html

第四步:使用cnpm i webpack -D 安装webpack   4.2.0 注意版本。

第五步: 还要安装 cnpm i webpack-cli  -D   2.0.13

3.2 VS初始化一个html 页面。先输入 !,然后按下tab键。

 

3.3 cnpm i wbpack -S    -S  和 -D d   

安装 cnpm .  npm i cnpm -g   全局安装一个cnpm

3.4 直接运行webpack 打包命令,失败。原因是相关配置没有配置好。需要建立一个webpack.config.js 文件,进行相关的配置。

3.5 还是失败,因为是默认配置为index.js  我写的是main.js

3.6 webpack 4.X 提供了约定大于配置的概念。目的是为了减少这个配置文件的体积。约定了打包的入口文件是 ‘src/index.js ‘ ,打包的输出文件的  ‘dist/main.js’.但是是可以修改的。

3.7 webpack 4.X  中,新增了node 选项,主要是压缩还是不压缩,起到这工作。3.X中是没有这个功能的。

【注】

ES 6  代码可能暂时不能支持,但是需要配置babel 就能支持,建立一个bebelrc 文件就行。

 

4.运行一次就要重新打包一次,很麻烦,因此需要自动化打包,那么就安装webpack-dev-server 包,进行相关配置,自动化打包。

4.1    cnpm  i webpack-dev-server -D

4.2  进行配置。package.json  中,在脚本中配置。

“dev”  :  “webpack-dev-server ”

这里还可以配置其他的:

"dev" : "webpack-dev-server --open --port 3000 --hot"

--open  

--port

-- hot

-- host

--progress

--compress

--

 

4.3  main.js 已经托管到了内存当中,但是index.html  首页还没有托管到内存中,需要进一步完善。需要安装新的包。

4.3.1   cnpm i html-webpack-plugin -D

4.3.2  在webpack.config.js  中进行配置。

第一步,导入  const HtmlWebpackPlugin = require(‘html-webpack-plugin’)

第二步,进行导入包的配置,

 第一步,生成对象实例

 const htmlPlugin = new HtmlWebpackPlugin ({

template : ’path.join()’ , //源文件地址.其中。path.join()用于进行路径拼接的,__dirname  表示当前路径的一个常数参数。

filename : ‘’   //目的路径地址,

})

 

第二步,然后到 module 中进行配置,plugins : [ htmlPlugin  ]

 

 

5.React 学习。

5.1 安装包 cnpm i react react-dom -S    -S 代表从开发到上线都需要用到的东西,

react  创建组件和虚拟DOM 的

react-dom 专门进行DOM 操作的,就是进行渲染,ReactDOM.render();

5.2 进行相关的配置。

//1.导入包名。

import React from 'react' //创建组件,创建虚拟DOM,生命周期的相关,

import ReactDOM from 'react-dom' //渲染到页面展示相关,

 

//2. 创建虚拟的DOM 元素,

//第一个参数,创建元素的标签类型,

//第二个参数是节点的属性,

//第三个参数是标签的子元素,或者内容

const h1= React.createElement('h1',{id : 'h1',title :'h'},'这个想试图创建一个H1');

//3.把虚拟DOM 渲染到页面上。

//第一个参数,渲染谁,

//第二个参数,渲染的容器,

ReactDOM.render(h1 ,document.getElementById('app'))

//第四步,页面中放一个DOM 元素

 

在React  中一切皆是用js  对象来表现的,

 

 

6.DOM 元素之间的嵌套,

把相关的标签元素当作子节点挂载在相关的标签上。

 

7.js 中写html 代码,不能解析,那么则需要安装babel 解析器。在js 中混合写入类似于html 的语法,叫做JSX  语法。符合XML 规范的JS 。

JSX  的本质,还是在运行的时候转换成了 createElement的形式,

第一步,配置beble 等包。

cnpm i babel-core babel-loader babel-plugin-transform-runtime -D

 

cnpm i babel-preset-env babel-preset-stage-0 -D

 

cnpm i babel-preset-react -D

第二步,在webpackconfig 中配置loader 配置项

module : { //webpack 默认只能处理 .js 后缀文件,其他的需要安装包loader进行处理,

rules :[ //第三方匹配规则,

{test : /\.js|jsx$/,use : 'babel-loader',exclude : /node_modules/}

 //千万别忘记添加排除项

]

 

}

 

第三步、配置相关的.babelrc配置文件

{

"presets" : ["env","stage-0","react"],

"plugins" : ["transform-runtime"]

}

 

 

8.JSX  语法学习

//上面这个方式比较复杂,不人性化

//const h11= <div>这个是一个div</div>,但是不能解析,需要相关的包,需要使用bable 进行转换。

let a = 10 ///等价于 const a = 10

let str = '您好,刘送杰同学';

const h1 = <h1>这个是一h1</h1>

ReactDOM.render(<div>

{a}--<hr/>{str}

<hr/>{h1}

</div>,document.getElementById('app'))

 

 

JSX 就是可以在JS 中运行HTML,相关变量用{}括号包裹起来,然后进行相关的运行。

并且React  中的相关元素标签必须是闭合的。

 

9.

 

 

 

10.

 

 

11.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值