reactjs教程 - CSDN
精华内容
参与话题
  • 自从接触了ReactJSReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我,下面来跟我一起领略 ReactJS的风采吧~~ 章有点长,耐心读完,你会有很大收获哦~ 一、ReactJS简介 React 起源于 Facebook 的...

    现在最热门的前端框架有AngularJS、React、Bootstrap等。自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我,下面来跟我一起领略
    ReactJS的风采吧~~ 章有点长,耐心读完,你会有很大收获哦~

    一、ReactJS简介

    React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。由于 React 的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非常简单。所以,越来越多的人开始关注和使用,认为它可能是将来 Web 开发的主流工具。

    ReactJS官网地址:http://facebook.github.io/react/

    Github地址:https://github.com/facebook/react

    二、对ReactJS的认识及ReactJS的优点

    首先,对于React,有一些认识误区,这里先总结一下:

    • React不是一个完整的MVC框架,最多可以认为是MVC中的V(View),甚至React并不非常认可MVC开发模式;

    • React的服务器端Render能力只能算是一个锦上添花的功能,并不是其核心出发点,事实上React官方站点几乎没有提及其在服务器端的应用;

    • 有人拿React和Web Component相提并论,但两者并不是完全的竞争关系,你完全可以用React去开发一个真正的Web Component;

    • React不是一个新的模板语言,JSX只是一个表象,没有JSX的React也能工作。

    1、ReactJS的背景和原理

    在Web开发中,我们总需要将变化的数据实时反应到UI上,这时就需要对DOM进行操作。而复杂或频繁的DOM操作通常是性能瓶颈产生的原因(如何进行高性能的复杂DOM操作通常是衡量一个前端开发人员技能的重要指标)。React为此引入了虚拟DOM(Virtual DOM)的机制:在浏览器端用Javascript实现了一套DOM API。基于React进行开发时所有的DOM构造都是通过虚拟DOM进行,每当数据变化时,React都会重新构建整个DOM树,然后React将当前整个DOM树和上一次的DOM树进行对比,得到DOM结构的区别,然后仅仅将需要变化的部分进行实际的浏览器DOM更新。而且React能够批处理虚拟DOM的刷新,在一个事件循环(Event Loop)内的两次数据变化会被合并,例如你连续的先将节点内容从A变成B,然后又从B变成A,React会认为UI不发生任何变化,而如果通过手动控制,这种逻辑通常是极其复杂的。尽管每一次都需要构造完整的虚拟DOM树,但是因为虚拟DOM是内存数据,性能是极高的,而对实际DOM进行操作的仅仅是Diff部分,因而能达到提高性能的目的。这样,在保证性能的同时,开发者将不再需要关注某个数据的变化如何更新到一个或多个具体的DOM元素,而只需要关心在任意一个数据状态下,整个界面是如何Render的。

    如果你像在90年代那样写过服务器端Render的纯Web页面那么应该知道,服务器端所要做的就是根据数据Render出HTML送到浏览器端。如果这时因为用户的一个点击需要改变某个状态文字,那么也是通过刷新整个页面来完成的。服务器端并不需要知道是哪一小段HTML发生了变化,而只需要根据数据刷新整个页面。换句话说,任何UI的变化都是通过整体刷新来完成的。而React将这种开发模式以高性能的方式带到了前端,每做一点界面的更新,你都可以认为刷新了整个页面。至于如何进行局部更新以保证性能,则是React框架要完成的事情。

    借用Facebook介绍React的视频中聊天应用的例子,当一条新的消息过来时,传统开发的思路如上图,你的开发过程需要知道哪条数据过来了,如何将新的DOM结点添加到当前DOM树上;而基于React的开发思路如下图,你永远只需要关心数据整体,两次数据之间的UI如何变化,则完全交给框架去做。可以看到,使用React大大降低了逻辑复杂性,意味着开发难度降低,可能产生Bug的机会也更少。

    2、组件化

    虚拟DOM(virtual-dom)不仅带来了简单的UI开发逻辑,同时也带来了组件化开发的思想,所谓组件,即封装起来的具有独立功能的UI部件。React推荐以组件的方式去重新思考UI构成,将UI上每一个功能相对独立的模块定义成组件,然后将小的组件通过组合或者嵌套的方式构成大的组件,最终完成整体UI的构建。例如,Facebook的instagram.com整站都采用了React来开发,整个页面就是一个大的组件,其中包含了嵌套的大量其它组件,大家有兴趣可以看下它背后的代码。

    如果说MVC的思想让你做到视图-数据-控制器的分离,那么组件化的思考方式则是带来了UI功能模块之间的分离。我们通过一个典型的Blog评论界面来看MVC和组件化开发思路的区别。

    对于MVC开发模式来说,开发者将三者定义成不同的类,实现了表现,数据,控制的分离。开发者更多的是从技术的角度来对UI进行拆分,实现松耦合。

    对于React而言,则完全是一个新的思路,开发者从功能的角度出发,将UI分成不同的组件,每个组件都独立封装。

    在React中,你按照界面模块自然划分的方式来组织和编写你的代码,对于评论界面而言,整个UI是一个通过小组件构成的大组件,每个组件只关心自己部分的逻辑,彼此独立。

    072132381261891600.jpg

    React认为一个组件应该具有如下特征:

    (1)可组合(Composeable):一个组件易于和其它组件一起使用,或者嵌套在另一个组件内部。如果一个组件内部创建了另一个组件,那么说父组件拥有(own)它创建的子组件,通过这个特性,一个复杂的UI可以拆分成多个简单的UI组件;

    (2)可重用(Reusable):每个组件都是具有独立功能的,它可以被使用在多个UI场景;

    (3)可维护(Maintainable):每个小的组件仅仅包含自身的逻辑,更容易被理解和维护;

    三、下载ReactJS,编写Hello,world

    ReactJs下载非常简单,为了方便大家下载,这里再一次给出下载地址(链接),下载完成后,我么看到的是一个压缩包。解压后,我们新建一个html文件,引用react.js和JSXTransformer.js这两个js文件。html模板如下(js路径改成自己的):

    QQ截图20150721110651.png

    这里大家可能会奇怪,为什么script的type是text/jsx,这是因为 React 独有的 JSX 语法,跟 JavaScript 不兼容。凡是使用 JSX 的地方,都要加上 type="text/jsx" 。 其次,React 提供两个库: react.js 和 JSXTransformer.js ,它们必须首先加载。其中,JSXTransformer.js 的作用是将 JSX 语法转为 JavaScript 语法。这一步很消耗时间,实际上线的时候,应该将它放到服务器完成。

    到这里我们就可以开始编写代码了,首先我们先来认识一下ReactJs里面的React.render方法:

    React.render 是 React 的最基本方法,用于将模板转为 HTML 语言,并插入指定的 DOM 节点。

    下面我们在script标签里面编写代码,来输出Hello,world,代码如下:

    QQ截图20150721111143.png

    这里需要注意的是,react并不依赖jQuery,当然我们可以使用jQuery,但是render里面第二个参数必须使用JavaScript原生的getElementByID方法,不能使用jQuery来选取DOM节点。

    然后,在浏览器打开这个页面,就可以看到浏览器显示一个大大的Hello,world,因为我们用了

    标签。

     

    到这里,恭喜,你已经步入了ReactJS的大门~~下面,让我们来进一步学习ReactJs吧~~

    四、Jsx语法

    HTML 语言直接写在 JavaScript 语言之中,不加任何引号,这就是 JSX 的语法,它允许 HTML 与 JavaScript 的混写,了解过AngularJs的看到下面的代码一定会感觉很熟悉的,我们来看代码:

    QQ截图20150721111531.png

    这里我们声明了一个names数组,然后遍历在前面加上Hello,输出到DOM中,输出结果如下:

    QQ截图20150721111639.png

    JSX 允许直接在模板插入 JavaScript 变量。如果这个变量是一个数组,则会展开这个数组的所有成员,代码如下:

    QQ截图20150721111724.png

    显示结果如下:

    QQ截图20150721111738.png

    这里的星号只是做标识用的,大家不要被迷惑了~~

    你看到这里,说明你对React还是蛮感兴趣的,恭喜你,坚持下来了,那么下面,我们开始学习React里面的"真功夫"了~~ Are you ready?

    五、ReactJS组件

    1、组件属性

    前面说了,ReactJS是基于组件化的开发,下面我们开始来学习ReactJS里面的组件,React 允许将代码封装成组件(component),然后像插入普通 HTML 标签一样,在网页中插入这个组件。React.createClass 方法就用于生成一个组件类。

    下面,我们来编写第一个组件Greet,有一个name属性,然后输出hello + name的值,代码如下:

    QQ截图20150721111858.png

    看到这段代码,接触过AngularJS的朋友们是不是有一种熟悉的感觉,不过这里有几点需要注意:

    1)获取属性的值用的是this.props.属性名

    2)创建的组件名称首字母必须大写。

    3)为元素添加css的class时,要用className。

    4)组件的style属性的设置方式也值得注意,要写成style={{width: this.state.witdh}}。

    2、组件状态

    组件免不了要与用户互动,React 的一大创新,就是将组件看成是一个状态机,一开始有一个初始状态,然后用户互动,导致状态变化,从而触发重新渲染 UI 。下面我们来编写一个小例子,一个文本框和一个button,通过点击button可以改变文本框的编辑状态,禁止编辑和允许编辑。通过这个例子来理解ReactJS的状态机制。先看代码:

    QQ截图20150721112014.png

    这里,我们又使用到了一个方法getInitialState,这个函数在组件初始化的时候执行,必需返回NULL或者一个对象。这里我们可以通过this.state.属性名来访问属性值,这里我们将enable这个值跟input的disabled绑定,当要修改这个属性值时,要使用setState方法。我们声明handleClick方法,来绑定到button上面,实现改变state.enable的值。效果如下:

    072305421429007.gif

    原理分析:

    当用户点击组件,导致状态变化,this.setState 方法就修改状态值,每次修改以后,自动调用 this.render 方法,再次渲染组件。

    这里值得注意的几点如下:

    1)getInitialState函数必须有返回值,可以是NULL或者一个对象。

    2)访问state的方法是this.state.属性名。

    3)变量用{}包裹,不需要再加双引号。

    3、组件的生命周期

    组件的生命周期分成三个状态:

    • Mounting:已插入真实 DOM

    • Updating:正在被重新渲染

    • Unmounting:已移出真实 DOM

    React 为每个状态都提供了两种处理函数,will 函数在进入状态之前调用,did 函数在进入状态之后调用,三种状态共计五种处理函数。

    • componentWillMount()

    • componentDidMount()

    • componentWillUpdate(object nextProps, object nextState)

    • componentDidUpdate(object prevProps, object prevState)

    • componentWillUnmount()

    此外,React 还提供两种特殊状态的处理函数。

    • componentWillReceiveProps(object nextProps):已加载组件收到新的参数时调用

    • shouldComponentUpdate(object nextProps, object nextState):组件判断是否重新渲染时调用

    下面来看一个例子:

    QQ截图20150721112254.png

    上面代码在hello组件加载以后,通过 componentDidMount 方法设置一个定时器,每隔100毫秒,就重新设置组件的透明度,从而引发重新渲染。

    4、组件的嵌套

    React是基于组件化的开发,那么组件化开发最大的优点是什么?毫无疑问,当然是复用,下面我们来看看React中到底是如何实现组件的复用的,这里我们还写一个例子来说吧,代码如下:

    QQ截图20150721112325.png

    这里我们创建了一个Search组件,然后又创建了一个Page组件,然后我们在Page组件中调用Search组件,并且调用了两次,这里我们通过属性searchType传入值,最终显示结果如图:

    六、ReactJS小结

    关于ReactJS今天就先学习到这里了,下面来总结一下,主要有以下几点:

    1、ReactJs是基于组件化的开发,所以最终你的页面应该是由若干个小组件组成的大组件。

    2、可以通过属性,将值传递到组件内部,同理也可以通过属性将内部的结果传递到父级组件(留给大家研究);要对某些值的变化做DOM操作的,要把这些值放到state中。

    3、为组件添加外部css样式时,类名应该写成className而不是class;添加内部样式时,应该是style={{opacity: this.state.opacity}}而不是style="opacity:{this.state.opacity};"。

    4、组件名称首字母必须大写。

    5、变量名用{}包裹,且不能加双引号。

    七、参考资料

    React中文文档 

    React入门实例教程

    颠覆式前端UI开发框架:React

    展开全文
  • 19全新react16.8版本零基础进阶单页面全家桶项目实战 2019年8月份录制,采用react16.8版本,react-router4.x版本,分13章71节
  • reactjs视频教程

    2018-12-01 20:46:25
    reactjs视频教程需要的可以关注微信公众号搜索:cityapes或者搜索:城市一猿 点击菜单的vue.js就可以下载了

    reactjs视频教程需要的可以关注微信公众号搜索:cityapes或者搜索:城市一猿 点击菜单的vue.js就可以下载了

    展开全文
  • react.js从入门到精通(一)

    千次阅读 2018-08-11 10:00:21
    web端三大框架react、vue和angular,下面是对react.js的一些总结。 一、环境搭建 1、npm搭建项目 推荐使用npm搭建项目环境,如果网速过慢,可是使用cnpm进行项目的搭建(cnpm是淘宝的npm镜像,与npm有些差异,...

    web端三大框架react、vue和angular,下面是对react.js的一些总结。

    一、环境搭建

    1、npm搭建项目

    推荐使用npm搭建项目环境,如果网速过慢,可是使用cnpm进行项目的搭建(cnpm是淘宝的npm镜像,与npm有些差异,有些模块无法下载或无法正常使用)。

    cnpm install -g create-react-app
    create-react-app my-app
    cd my-app
    npm start
    • 1
    • 2
    • 3
    • 4

    打开浏览器,输入http://localhost:3000可以看到系统默认生成的页面了。 
    这里写图片描述

    2、推荐使用的项目结构

    https://git.coding.net/yibingCoding/ReactLearn.git 
    可以通过git clone方式下载项目结构。

    二、目录结构与各文件功能

    1、目录结构

    这里写图片描述 
    1、index.html文件为项目的总入口,CDN引入的资源可以放在此文件中。 
    2、package.json文件是模块功能配置,使用npm install可生成node_modules文件夹,所有模块功能所需要的资源都存储在这个文件夹中。 
    3、routes.js文件是路由配置文件,路由功能是三大前端框架的特色(具体用法下面会详细说)。 
    4、Home.js文件是项目结构初始化放上去的界面。

    三、react.js的第一个dome

    在Home.js中编写代码,代码如下:

    import React,{ Component } from 'react'
    import demo1Image from '../../image/demo1Image.jpg';
    class Home extends Component {
      render() {
        return (
          <div style={{backgroundColor:"#0ff",fontSize:"20px",color:"#00f"}}>
            这是第一个demo
            <img src={demo1Image} style={{width:"300px",height:"300px"}} alt=""/>
          </div>
        )
      }
    }
    export default Home
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    效果如下: 
    这里写图片描述

    展开全文
  • react基础教程

    千次阅读 2020-01-14 10:13:56
    react基础教程

    • 学习资源推荐:https://blog.csdn.net/qq_42813491/article/details/90213353

    官网

    • https://react.docschina.org/
      在这里插入图片描述

    • 官方教程:https://react.docschina.org/tutorial/tutorial.html

    • 介绍什么的就不说了,从代码开始

    安装

    • 在此之前,请确保已经安装了node.js.
    • cmd输入node -v 显示版本号表示已成功安装
    • node官网:https://nodejs.org/en/
      在这里插入图片描述
    • 快速开始
    npx create-react-app my-app
    cd my-app
    npm start
    
    • 注意,安装是外网安装,建议使用镜像,不然会很慢

    • 详情可参考:https://blog.csdn.net/qq_42813491/article/details/90311075

    • 以上三个命令执行完,显示以下界面表示脚手架安装成功
      在这里插入图片描述

    • 这是主界面,跑在3000端口
      在这里插入图片描述

    目录结构

    在这里插入图片描述

    • 都很常见,不多介绍了

    hello world

    • src下一些没用的可以删掉,如下:看起来对新手更友好

    在这里插入图片描述

    • index.js入口文件和下边的服务器相关配置文件不要动了,css什么的可以删掉
    • APP.js
    import React from 'react'
    
    class App extends React.Component{
    
      render(){
        return <h1>hello world</h1>
      }
    
    }
    
    export default App;
    
    • 也可以这样
    import React, {Component}from 'react'
    
    class App extends Component{
    
      render(){
        return <h1>hello world</h1>
      }
    
    }
    
    export default App;
    
    • 效果图
      在这里插入图片描述

    • 注意点

    • render里边是html+js混写的jsx语法,HTML标签不需要加引号

    • 最外层一定要有个根标签包裹,最好再加上一个圆括号

    • 单标签必须封闭
      *

    组件化

    虽然render函数里边就可以直接写模板,但是通常不会把一切东西都放进去.不利于维护,也不美观,常用的自然是组件化开发。

    • 修改目录结构,src下新建components文件夹,用来放各个组件
      注意,规范中组件名大写,且以js或jsx为后缀名,就像.vue 文件一样

    • 可能你的编辑器写完了是这样的
      在这里插入图片描述

    • 颜色怪是语法识别问题,把编译环境换成jsx就好了

    • 组件定义完记得暴露出去,APP界面用import导入,然后挂载使用

    在这里插入图片描述

    • 效果图
      在这里插入图片描述

    • 数据的定义和使用,类似vue的data

    在这里插入图片描述

    • 直接在render里边写会有警告,应该写在构造函数里边
      在这里插入图片描述

    图片和样式表的引入

    • 图片资源分为本地和远程,加载远程资源直接src引入图片地址就可以
    • 记得加alt属性,不然会有警告
     <img alt="logo"src="https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=2920084749,2018893236&fm=58&s=39C718720E8EBE011B398BAC0300F024&bpow=121&bpoh=75"/>
    

    在这里插入图片描述

    • 本地图片加载和本地样式表加载是路径引入的方式

    *import logo from './logo.png'
    <img alt="logo" src={logo}/>

    • {}是react的jsx语法环境
    • import style from './style.css'
      在这里插入图片描述
    展开全文
  • dva2.x基础视频教程

    千人学习 2019-06-27 11:04:23
    基于 redux、redux-saga 和 react-router 的轻量级前端框架。
  • 课程概述: React是目前最火的前端框架之一,就业薪资很高,本课程教您如何快速学会React并应用到实战,教你如何解决内存泄漏,常用UI库的使用,自己封装组件,正式上线白屏问题,性能优化等。...
  • reactjs 视频教程

    千次阅读 2015-07-07 13:06:47
    最近玩了一下react,感觉挺不错的,搜了一下没有看到什么视频教程,于是自己便录制了几个入门视频,希望可以帮到大家,已经上传土豆了,可以点击下面的链接查看。...
  • 这是2019 react入门到高级新课程 学习react,不仅能带来技术提升,同时提高开发效率和体验,更能带来好的就业机会。 本课程主要分为以下几个部分: ...学习如何搭建react项目,以及react组件,jsx语法、css...
  • React前端框架/进阶篇

    千人学习 2019-01-30 17:45:42
    React是一个用于构建用户界面的JAVASCRIPT库。React主要用于构建UI,很多人认为React是MVC中的V(视图)。React起源于Facebook的内部项目,用来架设Instagram的网站,并于2013年5月开源。React 拥有较高的性能,代码...
  • React服务器端渲染及Next.js实战

    千人学习 2019-04-26 23:51:15
    Next.js是一个基于React的一个服务端渲染简约框架。它使用React语法,可以很好的实现代码的模块化,有利于代码的开发和维护。 介绍服务器端渲染原理,深入浅出的讲解nuxt框架的使用。掌握服务器端渲染原理,...
  • Ant Design Pro实战入门教程-整合版

    千人学习 2019-12-27 18:17:02
    Ant Design Pro是一个企业级中后台前端/设计解决方案,秉承了 Ant Design 的设计价值观,致力于在设计规范和基础组件的基础上,继续向上构建,提炼出典型模板/业务组件/配套设计资源。随着设计者的不断反馈,Ant ...
  • React Hooks + express + mockjs 前后端列表分页实战课程,前后端实战课程,大喵将带着大家手写每一行代码,满满的全是干货哟 ~
  • React.JS 是目前火的前端框架之一,是一个相对于别的框架更专注于view层的前端框架。 由于 React的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非常简单。所以,越来越多的人开始关注和使用,认为它可能...
  • 從零開始學 ReactJSReactJS 101)是一本希望讓初學者一看就懂的 ReactJS 中文入門教學書,由淺入深學習 ReactJS 生態系 (Flux, Redux, React Router, ImmutableJS, React Native, Relay/GraphQL etc.)。...
  • React是目前前端开发领域里应用最广泛的框架之一,也是目前很多大厂在用的框架,学好React可以增加找工作的砝码。 本套课程是从学生的角度出发,将复杂的概念以通俗易懂的话术讲授出来,方便学生理解。...
  • 我们将使用 React VR 这个款VR框架,手写每一行代码,开发一个非常经典的全景VR交互实战项目,适合对 VR 360°感兴趣的同学,也适合了解前沿前端技术的,中高级前端开发工程师;
  • vue.js视频教程,vue.js视频教程下载

    万次阅读 多人点赞 2016-09-14 23:14:31
    backbone,angularjs 已成昨日黄花,reactjs 如日中天,同时另一更轻量的 vue 发展势头更猛,尤其是即将 release 的2.0版本,号称兼具了 angularjs 和 reactjs 的两者优点。 关于vue.js我就不多废话了,大家可查阅...
  • React是一个用于构建用户界面的 JavaScript 库。起源于 Facebook 的内部项目,并与2013年5月开源。React拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它
  • React是一个用于构建用户界面的 JavaScript 库。起源于 Facebook 的内部项目,并与2013年5月开源。React拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它
1 2 3 4 5 ... 20
收藏数 2,514
精华内容 1,005
热门标签
关键字:

reactjs教程