了解React Native跨平台

bru*_*ruh 5 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中单独进行此操作?

Tom*_*ers 3

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

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

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