我正在研究一个宠物项目(Web应用程序),我想知道是否应该使用react,因为使用此代码创建本机应用程序会很容易(将来如果需要的话)。
如果答案是肯定的,那么对于大多数重用而言,遵循的最佳实践是什么?
如果答案是否定的,您可以推荐一个替代方法吗?
有关我的情况的更多信息。
我是一个相对较新的反应者,我的替代方法将是带有引导程序和jquery的很好的html。我正在考虑使用ASP.NET MVC和Web API。
在React Web应用程序和React Native应用程序之间共享应用程序逻辑,同时保持每个平台唯一的组件渲染是可能的!
我认为,这是我们提供的绝佳选择。我将为您提供该方法的概述和一些建议。
在理想的世界中,我们将能够共享100%的代码。据我所知,这是不可能的,但是我们仍然可以共享很多代码。尽管React Native类似于React,但是要注意 渲染代码是不同的 ,这一点非常重要。取而代之的是诸如Web <div>或Web之类的东西<span>,您可以使用React Native组件(如<View>)<Text>和其他内置组件。
<div>
<span>
<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。
* 在iOS模拟器和设备上,Android模拟器和设备上。React
Native使用JavaScriptCore,它是支持Safari的JavaScript引擎。在iOS上,由于iOS应用程序中没有可写的可执行内存,因此JSC不使用JIT。 * 使用Chrome调试时,它将在Chrome本身中运行所有JavaScript代码,并通过WebSocket与本机代码进行通信。因此,您正在使用V8。
虽然两种环境非常相似,但是您最终可能会遇到一些不一致之处。
实际上,您将单独托管两个或多个项目,因此npm软件包是在它们之间共享代码的最简单方法之一。
制作一个新程序包并将其设置为每个项目中的依赖项很容易。对于共享项目的路径,可以使用git存储库,而不是指向npm上的公共包。
即使您现在仅构建Web应用程序, 也可以花一些时间考虑如何概括一些共享代码 ,以便将来更轻松地重用它。