可以使用反应原生的反应js web代码来构建移动应用程序吗?

时间:2016-12-14 04:25:50

标签: reactjs web react-native

我正在开展宠物项目(网络应用程序),我想知道是否应该使用反应,因为从这段代码创建本机应用程序很容易(将来如果我需要)。

  • 如果答案是肯定的,那么最佳做法是什么 最重复使用?

  • 如果答案是否定的,您能否推荐替代方案?

有关我的情况的更多信息。

我的反应相对较新,而我的另类选择是好的。带引导程序和jquery的html。我正在考虑使用asp.net mvc和web api。

2 个答案:

答案 0 :(得分:12)

在React Web应用程序和React Native应用程序之间共享应用程序逻辑,同时保持每个平台的单个组件呈现是唯一的!

在我看来,这是一个很好的选择。我将向您概述该方法和一些建议。

在理想的世界中,我们可以分享100%的代码。据我所知,这是不可能的,但我们仍然可以分享很多代码。尽管React Native与React类似,但请注意呈现代码不同非常重要。您可以使用<div><span>和其他内置组件等React Native组件来代替<View><Text>等网络内容。

然而,在大多数情况下,业务逻辑只是JavaScript,而且这是我们可以分享的重要事项之一!

计划

基于您正在使用的Flux架构,这意味着您的商店,减少器,操作将是共享代码,以及大多数业务逻辑(内部服务或其他)以及常量和实用程序

然后,将使用React Native为每个本机平台专门编写UI层,使用React 为Web创建。不仅因为有必要用React Native组件替换HTML元素,还因为组件在移动应用程序上可能会有非常不同的行为。

一些一般准则/建议

  • 考虑一个好的架构和代码结构,以便尽可能多地共享代码(和应用程序逻辑)。尝试分离UI表示组件(每个平台的组件都不同)。

  • 查看React Native文档中的JavaScript Environment specifics。使用React Native时,您将在两个环境中运行JavaScript代码:

      
        
    • 在iOS模拟器和设备,Android模拟器和设备上。 React Native使用JavaScriptCore,它是为Safari提供支持的JavaScript引擎。在iOS上,由于iOS应用程序中没有可写的可执行内存,因此JSC不使用JIT。
    •   
    • 使用Chrome调试时,它会运行Chrome中的所有JavaScript代码,并通过WebSocket与本机代码进行通信。所以你使用的是V8。
    •   

    虽然两种环境非常相似,但最终可能会出现一些不一致的情况。

  • 考虑共享代码的不同策略。为了访问共享代码,您构建的应用程序并不必都存在于相同的代码库或git存储库中。

    更现实地说,您将分别托管两个或更多项目,因此npm包是在它们之间共享代码的最简单方法之一。

    这很简单,就像创建一个新包并将其设置为每个项目中的依赖项一样。对于共享项目的路径,您可以使用git存储库,而不是指向npm上的公共包。

    即使您现在只构建了网络应用,您可能会花一些时间考虑如何推广一些共享代码,因此更容易重复使用它将来。

答案 1 :(得分:1)

这是可行和可行的。你必须拥有每个平台的视图(web / android / ios),因为每个平台都有你的组件..

业务逻辑必须不在视图之内。使用flux可以使您的项目更容易使用native,因为它将api交互移动到数据层,让视图只是一个视图。