【问题标题】:Cross platform for React NativeReact Native 的跨平台
【发布时间】:2016-04-08 05:33:28
【问题描述】:

据我所知,React Native 的首要任务不是跨平台。它声称“一次学习,随处使用”,而不是“编写一次,随处使用”。所以有一些特定的组件,如 StatusBarIOS、NavigatorIOS、AlertIOS。尽管有一些跨平台的替代组件,如 Navigator、StatusBar 等,但 Facebook 建议我们使用特定于平台的版本以获得更好的性能。

但我的问题是,为什么不首先将平台特定版本包装在通用版本中?比如Navigator,为什么不直接在iOS内部使用NavigatorIOS呢?在保持性能的同时让它跨平台不是更好吗?

【问题讨论】:

    标签: react-native


    【解决方案1】:

    取决于你的意思

    但我的问题是,为什么不首先将平台特定版本包装在通用版本中?

    我试图构建一个所谓的跨平台应用程序。但是我最终编写了太多的 if-else 块来渲染最简单的特定于平台的组件。我完全放弃了整个应用程序,并尝试使用更好的文件夹结构。

    我在应用程序的根目录中创建了一个src 文件夹。然后将应用分为apiviewscomponentsviewscomponents 进一步分为 androidios 文件夹。在src 文件夹中,我有一个main.js,其中包含Navigator

    这是我更喜欢做的事情!你可能想做点别的。没关系。在这次学习体验结束时,我发现 Facebook 是对的。它不是一次编写,到处使用。它是一次学习,随心所欲!只要您的应用为您的用户提供 60 FPS 的体验,任何东西在 React Native 中都是有效的。

    【讨论】:

    • 我的意思是为什么 Facebook 不使用标准接口将所有内容都包装在 React Native 中。例如,当您在 iOS 中使用 Navigator 时,您实际上会使用 NavigatorIOS。那么我们的代码中就不需要任何if,else了。
    • 好主意,至少可以娱乐。但导航器 IOS 不再由 Facebook 维护。其他组件是特定于平台的,因此您不可能在不受支持的平台上使用它。 Facebook 相信程序员的常识,因此相信组件的松散耦合。
    • 其实我发现 AlertAlertIOS 没有区别。但 Alert 将是跨平台的。如果是这样,我们为什么要使用 AlertIOS 或者我们为什么要保留 AlertIOS?无论如何,谢谢你的想法。
    • @bagusflyer 是的,我非常清楚你的观点。但是想象一个场景,iOS 中的 alert 包含一个名为“title”的道具,而 Android 中的 alert 不支持“title”道具。程序员必须记住,Android 警报没有标题,然后相应地编写代码。类似的问题可能发生在表面上看起来相同但细节差异很大的组件上。那么将 Alert 和 AlertIOS 作为单独的组件不是更好吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多