首页 文章

了解React Native Cross Platform

提问于
浏览
3

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

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

我最初的理解是"build once, deploy everywhere" . 我很快意识到在编辑 index.ios.js 文件后情况并非如此 .

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

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

  • 为一个平台构建应用程序,让我们说 index.ios.js

  • 然后 copy 结束并更改平台特定位以适合 index.android.js

  • 如何定位传统"desktop browsers"呢?应该在React中完成 seperately 而不是React-native?

1 回答

  • 2

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

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

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

相关问题