1.技术体系问题css
RN和React共用一套抽象层,相对于前端,RN其实更接近Node的运行环境html
ReactNative =React +IOS +Android
看RN文档时,我会发现入门基础那一块介绍的都是React的内容,进阶篇则介绍了不少IOS和Android的API前端
2.组件设计问题react
Android和IOS一些设计组件是不共通的,这意味着,本来在React上只返回一个组件的状况下,RN中你可能须要判断平台分别返回两个版本的组件,为何要这样? 由于对于许多组件,两个平台的风格差别实在太大,只能分而治之。android
3.静态资源问题ios
RN应用和普通Web应用有一些天生的差异,RN应用是能够植入预约的静态资源的,也就是不须要通过任何一次请求,而均可以本地使用的静态资源,而Web应用试图使用这种资源则须要通过至少一次的网络请求而且缓存,但仍有可能被用户强清缓存等操做付之一炬。web
这意味着,作性能优化时也许能够从静态资源入手了,我阅读了如下文章后 探索 react native 首屏渲染最佳实践数据库
学习到了能够经过静态文件占位图优化RN首屏的新思路。固然,不少时候React和RN的优化思路也是共通的,例如react-native
4.标签生效问题浏览器
5.事件核心问题
Web开发中,点击事件是核心,而在主攻移动端的RN中,触摸事件的地位则大大加强,并且除此以外,还衍生了长按事件(JS中我记得只有双击事件没有长按事件)
6.CSS3属性受限,动画效果使用方式彻底变动
CSS/Animation我用不了了,由于CSS已经没了了,底层是用bridge调原生的UI构建
7.虚拟DOM到虚拟View的演变
在React中,咱们使用虚拟DOM模拟现实中的DOM节点
在RN中,这个对象被换成了虚拟View,对应原平生台中的视图,由于RN中已经没有DOM了
8.UI呈现的变化
(如下参考自: http://blog.ilibrary.me/2016/12/25/react-native-internal)
UI的描述和呈现分离开了。
在react native 里面,1和2是不变的,也是用html语言描述页面有哪些功能,而后stylesheet告诉浏览器引擎每一个控件应该长什么样。而且和浏览器用的是同一个引擎。
在步骤3里面UI控件再也不是浏览器内置的控件,而是react native本身实现的一套UI控件(两套,android一套,ios一套),这个切换是在MessageQueque中进行的,而且还能够发现,他们tag也是不同的。参考连接:http://blog.ilibrary.me/2016/12/25/react-native-internal
12.导航有提供专门的模块:好比react-navigation和react-native-navigation
13.动画要用Animated控件,不能本身写CSS3的动画属性了,好比Animation和transition