为什么react-native不能把ios和android应用写成一套代码?

刚入门,觉得既然已经统一用js来编写了为什么不能做的更完美一点,once write,run anywhere~

感觉react packager已经足够强大了,多封装一层对ios和android的一些特例比如对导航中封装一下
比如说打包编译成ios程序就用NavagatorIOS,编译成android就用react-navagator

我在想有可能是因为ios和android应用存在不可改变的区别(可能是因为硬件系统上),比如样式,或者是手势这些。
导致编写一套代码不能同时满足两种系统的要求

所以想知道是什么原因导致在react-native中仍然要根据ios和android编写两套代码

阅读 7.1k
5 个回答

js只是作为一个中间语言而已 调用还是原生的api 只是用js做了一次封装而已 基于两种原生语言的差异性 很难做到统一

我想是为了更好的贴近原声的应用,你知道iOS和Android之间有很多相似,但是也有很多不同。如果一个api或者控件只有iOS才有,那写成一套代码,Android岂不是会出错,或者不显示?

之前我使用Xamrin Form的时候倒是可以写一套代码,但是实现的功能和界面非常的基础,很多高级特性都没有。

在比如,iOS更新了,如果是2套,react就更新iOS那套就行。如果是你想的那样使用一套,是不是很尴尬?

用js并不能十全十美,还是需要一些Java和iOS的基础知识,比如,iOS要使用项目外功能需要开启权限,在使用SDK的时候两者要做专门的设置,这些都是没办法避过的

在写rn时,大多数时候,android与ios都是共用同一套代码的啊,rn就是为了做这个的。只有部分功能因为平台差异,需要使用文件后缀名或Platform来区分平台编写特定代码。

rn的思想是learn once, write anywhere

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题