动力设备网 加入收藏  -  设为首页
您的位置:动力设备网 > 科技 > 正文
React Native之原理浅析
React Native之原理浅析
提示:

React Native之原理浅析

原文链接 UI的描述和呈现分离开了 Javascript在react native里面非常重要 React Native它可不一样 React Native组件结构 在一定程度上,React Native和NodeJS有异曲同工之妙。它们都是通过扩展JavaScript Engine, 使它具备强大的本地资源和原生接口调用能力,然后结合JavaScript丰富的库和社区和及其稳定的跨平台能力,把javascript的魔力在浏览器之外的地方充分发挥出来 JavaScriptCore + ReactJS + Bridges 就成了React Native RCTRootView做的事情如下 React Native的初始化分为几个步骤 这里需要提一下的是 JS Engine不直接管理UI的绘制 | - (NSDictionary *)constantsToExport { return @{ @"firstDayOfTheWeek": @"Monday" };// JS里面可以直接调用 ModuleName.firstDayOfTheWeek获取这个常量 } | 内部机制 JS用时序 Java层核心类及原理,如下所示 ReactContext ReactInstanceManager ReactRootView CatalystInstance JavaScriptModule NativeModule JavascriptModuleRegistry NativeModuleRegistry CoreModulePackage Java 调用Js Js 调用Java

如何评价 React Native
提示:

如何评价 React Native

先说结论:必有作为,但绝不会是一家独大,甚至很难成为主流。

用过 React 会知道,React 的核心概念是「DOM Representation」,在开发者和 DOM 中间构建一个中间件,然后通过高效的算法来 diff 两次 Virtual DOM 渲染的差异,然后在最小范围内更新 DOM,在大部分情况下——注意是大部分不是所有——这种做法都是足够高效的,但是对于精细的需求、动画控制等——比如在移动设备上做一个跟随 touchmove 的元素,还要各种 transition 等等——场景 React 会显得力不从心,或者很笨拙。

但是抛开这些太过复杂的需求,React 是有能力满足大部分的业务场景的。

再说 React Native,这几天不停看见媒体用「Web 开发要 XXX」一类的题目来发稿,真是吐槽无力。React Native 根本都不算 Web 开发好不好——Webview 都没了还 Web 个 bird 啊...

React Native 继承了 React 在 JavaScript 的扩展语法 JSX 中直接以声明式的方式来描述 UI 结构的机制,并实现了一个 CSS 的子集,这把「DOM Representation」的概念外扩成了「UI Representation」,由于不是操作真实 UI,就可以放到非 UI 线程来进行 render——所有做客户端 UI 开发的都应该知道 UI 线程是永远的痛,无论你怎么 render,render 的多低效,这些 render 都不会直接影响 UI,而要借由 React Native 来将改变更新回 UI 线程。

由于目前没有任何示例代码,也看不到更细节的实现机制介绍,所以以下部分为猜测。如果 React Native 沿袭 React 的机制,就会同样是把两次 render 的 diff 结果算出来,然后把 diff 结果传递回主线程,在最小范围内更新 UI。

所以,核心是以下三点:
1. 在非 UI 线程渲染 UI Representation
2. 高效的 diff 算法保证 UI update 的高效
3. 没错,由于中间件的机制,React 很有可能成为一个跨平台的统一 UI 解决方案,可以理解为 UI 开发的虚拟机?

声明式 UI 开发,简单快捷,必然大有作为。精细控制无力,复杂应用场景无法很好满足,必然受限。