Slide 1

Slide 1 text

React 简介 宫煌 2014.11.14

Slide 2

Slide 2 text

题外话 about Yahoo http://yahooeng.tumblr.com/post/101682875656/evolving-yahoo-mail

Slide 3

Slide 3 text

React

Slide 4

Slide 4 text

React

Slide 5

Slide 5 text

Overview • 只关注 view 层 • ⻚页⾯面细划分为各部分 component • 核⼼心是组件的 render

Slide 6

Slide 6 text

Features • ⻚页⾯面渲染性能好,使⽤用 virtual DOM,避免操纵 DOM 损耗性能 • DOM 的读/写批量进⾏行,减少 layout 计算次数 • 当属性变化时,基于 virtual DOM 全部重新渲染 • 不需要借⽤用模版语⾔言实现逻辑,no strings • 不需要专⻔门操作 DOM 的库(jQuery)

Slide 7

Slide 7 text

var ExampleApplication = React.createClass({ render: function() { var appName = this.props.appName; var message = 'React has been successfully running.' + ' Appname is: ' + appName; return React.DOM.p(null, message); } }); var ExampleApplicationFactory = React.createFactory(ExampleApplication); React.render( ExampleApplicationFactory({appName: 'Demo'}), document.getElementById('container') ); Basic usage

Slide 8

Slide 8 text

Full example Example

Example

var ExampleApplication = React.createClass({ render: function() { var appName = this.props.appName; var message = 'React has been successfully running.' + ' Appname is: ' + appName; return React.DOM.p(null, message); } }); var ExampleApplicationFactory = React.createFactory(ExampleApplication); React.render( ExampleApplicationFactory({appName: 'Demo'}), document.getElementById('container') );

Slide 9

Slide 9 text

props & state • props 是各 component 之间传递的数据,不 可变 • state 是 component 内部的属性

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Flux • ⼀一种应⽤用设计⽅方式,适⽤用性⼲⼴广泛,不仅⽤用于 react • 区别于 MVC,提出 action dispatcher store view 的概念,数据单向传输

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Action • 定义语意化的的⽅方法,被 view 的 component 调⽤用 • 数据由 view 传到 action

Slide 16

Slide 16 text

Dispatcher • 应⽤用的枢纽,由 action 调⽤用 • 数据由 action 传⼊入 dispatcher • new Dispatcher() -> dispatch()

Slide 17

Slide 17 text

Store • 通过调⽤用 dispatcher 注册 handle • Dispatcher.register(function(payload ){}) • 数据 payload 由 dispatcher 传⼊入 store

Slide 18

Slide 18 text

View • 从 store 获取数据,并监听 store 的变化 • 数据由 store 传⼊入 view • 当 view 通过 setState 改变 state 时,重 新渲染 • 当有浏览器事件时,调⽤用 action 对应⽅方法

Slide 19

Slide 19 text

Unidirectional data flow

Slide 20

Slide 20 text

Flux 的例⼦子 • React docs

Slide 21

Slide 21 text

Tools • chrome devtools

Slide 22

Slide 22 text

Tools

Slide 23

Slide 23 text

Q&A

Slide 24

Slide 24 text

Thanks!