小编典典

可以使用React Native将React js Web代码用于构建移动应用吗?

reactjs

我正在研究一个宠物项目(Web应用程序),我想知道是否应该使用react,因为使用此代码创建本机应用程序会很容易(将来如果需要的话)。

  • 如果答案是肯定的,那么对于大多数重用而言,遵循的最佳实践是什么?

  • 如果答案是否定的,您可以推荐一个替代方法吗?

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

我是一个相对较新的反应者,我的替代方法将是带有引导程序和jquery的很好的html。我正在考虑使用ASP.NET MVC和Web API。


阅读 324

收藏
2020-07-22

共1个答案

小编典典

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

我认为,这是我们提供的绝佳选择。我将为您提供该方法的概述和一些建议。

在理想的世界中,我们将能够共享100%的代码。据我所知,这是不可能的,但是我们仍然可以共享很多代码。尽管React Native类似于React,但是要注意
渲染代码是不同的 ,这一点非常重要。取而代之的是诸如Web <div>或Web之类的东西<span>,您可以使用React
Native组件(如<View><Text>和其他内置组件。

但是,在大多数情况下,业务逻辑只是JavaScript,这是我们可以共享的重要内容之一!

计划

根据您使用的Flux架构,这意味着您的商店,Reducer,操作将是共享代码,以及大多数业务逻辑(服务内部或其他内容)以及常量和实用程序。

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

一些一般准则/建议

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

  • 看一下React Native文档中的JavaScript Environment细节。使用React Native时,您将在两种环境中运行JavaScript代码:

* 在iOS模拟器和设备上,Android模拟器和设备上。React

Native使用JavaScriptCore,它是支持Safari的JavaScript引擎。在iOS上,由于iOS应用程序中没有可写的可执行内存,因此JSC不使用JIT。
* 使用Chrome调试时,它将在Chrome本身中运行所有JavaScript代码,并通过WebSocket与本机代码进行通信。因此,您正在使用V8。

虽然两种环境非常相似,但是您最终可能会遇到一些不一致之处。

  • 考虑共享代码的不同策略。为了访问共享代码,构建的应用程序不必全部都驻留在同一代码库或git存储库中。

实际上,您将单独托管两个或多个项目,因此npm软件包是在它们之间共享代码的最简单方法之一。

制作一个新程序包并将其设置为每个项目中的依赖项很容易。对于共享项目的路径,可以使用git存储库,而不是指向npm上的公共包。

即使您现在仅构建Web应用程序, 也可以花一些时间考虑如何概括一些共享代码 ,以便将来更轻松地重用它。

2020-07-22