我想构建一个在Web,iOS和Android上运行的应用程序。
我只是按照教程使用React Native构建iOS应用程序。我已经在手机上成功运行了该应用。
我最初的理解是“一次构建,到处部署”。我很快意识到,在编辑index.ios.js
文件后情况并非如此。
此外,我很清楚我不能将源代码从index.ios.js
复制到index.android.js
,因为许多导入和API都是特定于平台的。但是,我知道除了大多数代码库都是平台模糊的。
达到我想要的结果的适当方法是什么?
index.ios.js
index.android.js
答案 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上,尽管它们几乎都是其他所有内容,这意味着跨平台的技能转移很好。