react native培训安排 - nuanxin1111/react GitHub Wiki

培训时间2015.01.13

React工作原理(杨仔)

培训时间2015.01.15

ES2015标准(帅帅)

语法特性

项目代码规范

使用Demo

Flux通信机制(路叔)

flux思想

reflux实现

使用Demo

ReactNative工作原理(鹏哥)

为什么需要reactnative开发

为不同平台单独开发原生APP,最重要的原因是我们能创造最佳的用户体验,并且能和这个平台的习惯保持一致。

  1. 原生开发,编写->编译->运行,大型项目很费时间,开发效率低。

  2. webview封装原生应用,所有的渲染都由web相关的技术来完成,无法得到一个真正原生的用户体验。

  3. js调用原生平台的API,需要技巧,避免出现阻塞或性能衰减。

    如果我们只是同步的在原生环境和解释环境之间调用,我们的UI线程很可能会被JavaScript执行阻塞住。要提升界面的响应效率,我们知道我们必须把JavaScript放到主线程之外执行,但这么做其实很困难。最直接的困难就是资源访问竞争。如果我们的JavaScript访问什么正好在被别的线程用的东西(譬如一个渲染的View的尺寸),系统就只能加锁来确保方案安全,而这又会导致UI线程的卡顿。还有一个问题在于每次原生和JavaScript虚拟机之间互相访问,在访问过程中都会带来极大的开销。如果我们要经常跨线程访问,我们不得不一次又一次的经历这种开销。

    所以如果我们不找到一个正确的办法,我们的应用可能比我们整个用原生写或者整个用JavaScript写还要糟糕的多。我们不能只是把用户接口API又同步的封装了一遍然后就期待能获得一个流畅的、和原生APP一样的体验。我们必须要改变一些基础层次的设计来确保我们的系统传递消息永远是异步的,这样我们就可以把这些消息以一定的单位来打包发送,来尽可能减少一些跨线程交互的开销。

js和原生组件通信机制

如何调用原生组件

使用Demo

ReactNative组件

自己跑Demo

FlexBox(杨仔)

原理

使用Demo