React

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React相关的知识,希望对你有一定的参考价值。

1】前端技术规划应该考虑什么事情?

1、组件库、模块化

2、开发效率

3、运行效率

4、可维护性

5、体验优化

 

2】目前解决这些问题的方案?

1、组件化:webComponentReact

2、模块化:webbackrequire.js

3、开发效率:MVCbackbone<FluxReact<MVVMAngular.js

4、运行效率:backboneReact

5、可维护性:flux,

 

3React技术栈对上述问题的解决

1、组件化:React天生组建化,可以在众多开源组建找到

2、模块化:基于webpack可以使用ES6CommonJs的写法

3、开发效率:相比MVC去除了控制器角色,只用关心render函数,

react网页源码结构:

<!DOCTYPE html>

<html>

  <head>

    <script src="../build/react.js"></script>

    <script src="../build/react-dom.js"></script>

    <script src="../build/browser.min.js"></script>

  </head>

  <body>

    <div id="example"></div>

    <script type="text/babel">

      // ** Our code goes here! **

    </script>

  </body>

</html>

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

ReactDOM.render(

  <h1>Hello, world!</h1>,

  document.getElementById(‘example‘)

);

上面代码将一个 h1 标题,插入 example 节点(查看 demo01

 

 

4】组件

React 允许将代码封装成组件(component),然后像插入普通 HTML 标签一样,在网页中插入这个组件。React.createClass 方法就用于生成一个组件类

var HelloMessage = React.createClass({

  render: function() {

    return <h1>Hello {this.props.name}</h1>;

  }

});

 

ReactDOM.render(

  <HelloMessage name="John" />,

  document.getElementById(‘example‘)

);

上面代码中,变量 HelloMessage 就是一个组件类。模板插入 <HelloMessage /> 时,会自动生成 HelloMessage 的一个实例(下文的"组件"都指组件类的实例)。所有组件类都必须有自己的 render 方法,用于输出组件。

 

 

5virtual DOM

组件并不是真实的 DOM 节点,而是存在于内存之中的一种数据结构,叫做虚拟 DOM virtual DOM)。只有当它插入文档以后,才会变成真实的 DOM 。根据 React 的设计,所有的 DOM 变动,都先在虚拟 DOM 上发生,然后再将实际发生变动的部分,反映在真实 DOM上,这种算法叫做 DOM diff ,它可以极大提高网页的性能表现

 

 

6AJAX

组件的数据来源,通常是通过 Ajax 请求从服务器获取,可以使用 componentDidMount 方法设置 Ajax 请求,等到请求成功,再用 this.setState 方法重新更新 UI

 

参考链接:http://www.ruanyifeng.com/blog/2015/03/react.html

 

以上是关于React的主要内容,如果未能解决你的问题,请参考以下文章

ReactReact Fiber

Reactreact新特性实例详解(memolazysuspensehooks)

ReactReact全家桶Redux

ReactReact全家桶Redux

ReactReact全家桶Redux

Reactreact概述组件事件