• 劣势:界面渲染效率低,多线程支持差,GC 问题。在 WebView 中绘制界面、实现动画的效率都比较低,开销也比较大。WebWorker 提供的多线程在 native 端有很大的局限,js 在 GC 时也有可能卡 UI。
React Native 的做法非常激进,完全抛弃了 HTML(抛弃了 HTML 不代表抛弃了声明式),抛弃了 WebView,在 background thread 里运行 js 并直接使用原生控件进行渲染。
这从根本上解决了渲染问题,使得 js 不再只能做 hybrid app,而能做出具有 native behavior 的流畅靠谱的 native app。从这一点上来说 React Native 已经做得相当不错了,尽管它只实现了 CSS 的子集,但是考虑到 CSS 如此复杂而它又抛弃了使用 webview 渲染,这是可以接受的。

===========
但是,React 的意义绝不在于解决了一些 hybrid app 的痛点。
React 是一个很有野心的项目,它的目标不仅仅是简单地使前端能用 js 写 native app,而是希望推广一个通用的前端构建方案,不论是 Web 前端,还是客户端前端。
FB 在演讲里说,React 的目标不是 “Write once, run anywhere",因为不同平台的差异是客观存在的,设计风格也各有不同。它要做的,是 “Learn once, write anywhere”。React 里的 view 不仅可以是 DOM,也可以是 iOS 控件或者 Android 控件,不论是什么平台,都能 “build in React”。

就我看来,前端不只是需要写网页,更重要的是要解决属于前端领域的各种问题Web 前端和客户端前端在本质上是一致的,探索前端领域的最佳实践是一件很有意义的事。
近些年前端比较火,相比于自成体系较为封闭的客户端前端, Web 前端在前端实践上的探索或许更多一些。不管是阿里的 Midway 那样侵入到后端的 UI layer,还是像 React Native 这样侵入到客户端前端,我认为都是非常值得称赞的探索。

至于到底怎么评价 React Native,我觉得它和 React 一样赞。