ReactJS简单介绍

1.什么是ReactJS

  • 简单来说:React是一个使用JavaScript创建用户界面的代码库。与编写用户界面常见的方式不同,React将每个UI元素视为一个抑制的状态机。它并不是类似于AngularJS这样的“框架”。React应用并不需要遵守MVC模型。React能够帮助你创建快速的用户界面,处理复杂的交互,而无需编写大量糟糕的代码。

  • React 框架本身作为 MVC 当中的 V 存在, 提供两个功能:

    I. 渲染和维护 DOM

    II. 监听 DOM 的事件

  • React的好处:

    I. React Component 设计得非常适合模块化

    II. Component 和 DOM 得益于 Virtual DOM 的 diff 和合并操作, 有性能提升

    III. 没有 Model 的复杂关系, 编写应用逻辑非常清晰

    IV. 服务端渲染

  • 宏观思想图:

    思想图

2.ReactJS能帮我们做什么

  • React会为你处理DOM

DOM操作的开销很大,而React的吸引力很大程度上来自于它对这一问题的处理方式。React通过对自身虚拟DOM的维护,只在需要时进行重新渲染,将DOM操作的数量降至了最低,这要归功于React中高性能的比较操作的实现。

  • React使用声明式风格以及组件

在React中,所有的组件都必须继承自Component类。组件中包含了属性(由父类决定)和状态(能够自行改变,通常是基于用户行为进行改变),组件的渲染和行为应当完全由它们的状态和属性所决定(而不依赖于任何其它值),因此组件就是状态机。这一模型鼓励使用者创建模块化的UI,并且在实践中能够简化UI的操作与创建工作。

将 JavaScript 和 HTML 绑定到 JSX
使组件更易懂,捆绑功能直接标记和打包成一个可移植的,自主控制的“组件”,让你更开心,且减少脏乱的代码。因为 JavaScript 与
HTML 关系密切,揉到一起也正常。

3.React的单向数据流

这一点更多的是一种通用的React模式,而不是一种严格的规则。信息的流动在React中倾向于单向流动。在本文的稍后部分中,当我们开始考虑在大型应用程序中如何处理信息流动时,会再次提及这一模式。

单向数据流使用了Flux概念(或者说是模式):

Flux 的概念很简单,view 层触发了一个事件(比如说,用户在文本域中输入了一个姓名),这个事件更新了 model,然后 model 触发了一个事件,view 响应了 model 的事件,使用最新的数据进行渲染。这一数据流/解耦观察者模式被设计来保证你的资源总存在于内存/模式中。

数据流

那么我们从代码层面来看:

code数据流

4.重新定义MVC

一般前端单页面的应用常用的架构之间简单的区别看这里:

mvpmvc

而通常实际当中结构会更复杂一点, 至少可以发现不是图上展示的单向的一个循环,实际上 MVC 很容易被写成这样, 在 View Model 之间产生复杂的关系,如下图:

flux-mvc

而 Flux 对 MVC 做了调整, 回到近似 MVC 的单向循环当中:

flux

5.开始使用ReactJS

JSX 可在浏览器中运行或独立运行。浏览器中的转换器可在开发上提供帮助,因此您在修改 JSX 代码后可立即看到结果。对于生产环境,您一定希望将独立的转换器合并到您的构建工具链中,以便提供实现最佳的性能。

  • 开发环境

    I. 下载react核心文件react.js

    II. 下载代码转换器JSXTransformer-0.12.2.js

  • 第一个Hello world

<!DOCTYPE html>
<html>
  <head>
    <script src="build/react.js"></script>
    <script src="build/JSXTransformer.js"></script>
  </head>
  <body>
    <div id="example"></div>
    <script type="text/jsx">
      React.render(
        <h1>Hello, world!</h1>,
        document.getElementById('example')
      );
    </script>
  </body>
</html>
  • 创建React组件
var MyHelloWorld = React.createClass({
  render: function() {
    return <h1>Hello, world!</h1>;
  }
});
  • 使用你的组件
React.render(
 <div>
    <MyHelloWorld />
 </div>,
  document.getElementById('container')
);

6.React推荐书籍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值