美文网首页
react-instruction

react-instruction

作者: 我的天气很好啦 | 来源:发表于2018-07-18 23:21 被阅读0次
                                                                          简单介绍

React一般被用来作为MVC中的V层,它不依赖其他任何的库,因此开发中,可以与其他的库集成使用,包括JQuery、Backbone等,它可以在浏览器端运行,也可以通过nodejs在服务器端渲染,react的思想非常独特,性能出众,可以写出重复代码少,逻辑清晰的前端代码。

                                                                            JSX

所谓的 JSX 其实就是 JavaScript 对象

React的语法是JSX,通过使用这种语法,可以在react代码中直接使用js和html来编写代码。为了更深刻的理解JSX的含义,在这里介绍一下底层原理。

当我们用 JavaScript 对象来表现一个 DOM 元素的结构,我们可以这样写:

<div class='box' id='content'>
  <div class='title'>Hello</div>
  <button>Click</button>
</div>

每个 DOM 元素的结构都可以用 JavaScript 的对象来表示。你会发现一个 DOM 元素包含的信息其实只有三个:标签名属性子元素
所以上面这个 HTML 的信息我们可以用合法的 JavaScript 对象来表示:

{
  tag: 'div',
  attrs: { className: 'box', id: 'content'},
  children: [
    {
      tag: 'div',
      arrts: { className: 'title' },
      children: ['Hello']
    },
    {
      tag: 'button',
      attrs: null,
      children: ['Click']
    }
  ]
}

我们会发现,HTML 的信息和 JavaScript 所包含的结构和信息其实是一样的,我们可以用 JavaScript 对象来描述所有能用 HTML 表示的 UI 信息。但是用 JavaScript 写起来太长了,结构看起来又不清晰,用 HTML 的方式写起来就方便很多了。

于是 React.js 就把 JavaScript 的语法扩展了一下,让 JavaScript 语言能够支持这种直接在 JavaScript 代码里面编写类似 HTML 标签结构的语法,这样写起来就方便很多了。编译的过程会把类似 HTML 的 JSX 结构转换成 JavaScript 的对象结构。

用react的JSX语法来写html结构,可以这么写:

import React, { Component } from 'react'
import ReactDOM from 'react-dom'
import './index.css'

class Header extends Component {
  render () {
    return (
      <div>
        <h1 className='title'>React 小书</h1>
      </div>
    )
  }
}

ReactDOM.render(
  <Header />,
  document.getElementById('root')
)

经过编译以后会变成:

import React, { Component } from 'react'
import ReactDOM from 'react-dom'
import './index.css'

class Header extends Component {
  render () {
    return (
     React.createElement(
        "div",
        null,
        React.createElement(
          "h1",
          { className: 'title' },
          "React 小书"
        )
      )
    )
  }
}

ReactDOM.render(
  React.createElement(Header, null), 
  document.getElementById('root')
);

React.createElement 会构建一个 JavaScript 对象来描述你 HTML 结构的信息,包括标签名、属性、还有子元素等。这样的代码就是合法的 JavaScript 代码了。所以使用 React 和 JSX 的时候一定要经过编译的过程。

有了这个表示 HTML 结构和信息的对象以后,就可以拿去构造真正的 DOM 元素,然后把这个 DOM 元素塞到页面上。这也是我们最后一段代码中 ReactDOM.render 所干的事情。

                                                                         一切皆组件

React.js 中一切皆组件,用 React.js 写的其实就是 React.js 组件。我们在编写 React.js 组件的时候,一般都需要继承 React.js 的 Component。一个组件类必须要实现一个 render 方法,这个 render 方法必须要返回一个 JSX 元素。但这里要注意的是,必须要用一个外层的 JSX 元素把所有内容包裹起来。返回并列多个 JSX 元素是不合法的。

相关文章

  • react-instruction

    React一般被用来作为MVC中的V层,它不依赖其他任何的库,因此开发中,可以与其他的库集成使用,包括JQuery...

网友评论

      本文标题:react-instruction

      本文链接:https://www.haomeiwen.com/subject/kivopftx.html