了解React Native Cross Platform

时间:2016-05-30 20:30:21

标签: javascript reactjs react-native

我想构建一个在Web,iOS和Android上运行的应用程序。

我只是按照教程使用React Native构建iOS应用程序。我已经在手机上成功运行了该应用。

我最初的理解是“一次构建,到处部署”。我很快意识到,在编辑index.ios.js文件后情况并非如此。

此外,我很清楚我不能将源代码从index.ios.js复制到index.android.js,因为许多导入和API都是特定于平台的。但是,我知道除了大多数代码库都是平台模糊的。

达到我想要的结果的适当方法是什么?

  • 为一个平台构建应用,让我们说index.ios.js
  • 然后复制,然后更改平台特定位以适合index.android.js
  • 如何定位传统的“桌面浏览器”呢?应该在React中单独而不是React-native?

1 个答案:

答案 0 :(得分:3)

我发现精心设计的项目可以在iOS和Android之间达到相对较高程度的代码共享 - 在某些情况下为85-95% - 这取决于应用程序的复杂程度。 .ios.android扩展只是存在,因为能够专门定位每个平台是有用的 - 在创建模块化组件时,有时每个操作系统会产生不同的挑战,因此您必须重新考虑该体系结构。一个例子是<Picker>组件,它在iOS上创建了UIPickerView,但在Android上创建了一个模态Picker和标签 - 两者的工作方式略有不同。但总的来说情况并非如此,至少根据我的经验。

由于index.js文件是入口点,因此它可以作为许多应用程序的路由器,这意味着您希望每个平台都相同 - 所以实际上只有一个{{1}适用于所有平台。有时可能需要进行特定于平台的初始化和全局分配,这将使单独的方法变得有用。

网络方面目前没有多少交叉(尽管希望这会改变)。 React Native利用React的强大功能,同时运行在iOS和Android团队设计的本机组件之上,移动和Web之间的差异相当广泛。据说有一些组件,例如React Swipeable Views,它们可以跨网络和本机工作,非常有前景。但是现在这两者是相当独立的 - 一个位于DOM上,另一个位于原生SDK上,尽管它们几乎都是其他所有内容,这意味着跨平台的技能转移很好。