React Native和React

19
我正在开发一个网页应用和iOS/Android应用(同一个应用)。起初我认为Cordova可能是一个不错的选择,但是在阅读之后,我觉得React Native可能是一个更好的选择。
我的问题是:我需要写两个相同的应用程序吗(一个用React开发网页,一个用React Native开发移动端)?
我看到了一些可以在网页上共享React Native组件的库,但我感觉会有一些限制。
你觉得呢?
编辑:还有一个问题 使用React,我会使用Flux(现在可能是Redux),那么为了保持我的React Native应用程序的整洁和可读性,我应该怎么处理数据?非常感谢你们的回答。
16个回答

9

我现在也在做同样的事情 - 我没有分享代码库,因为Web /移动应用程序的内容是不同的 - 我使用Web进行管理,移动应用程序用于查看内容。


9

React Native使用本地视图UIView、Text等进行显示。你不能将相同的代码库用于它们。 React Native使用flex box(它有自己的实现),因此这也不适用于Web React项目。

唯一的方法是将它们分开。同时,Web和App会有不同的设计。


7

我知道这可能是一个晚回答,但将来会有帮助。请查看 https://github.com/este/este,它有不同的移动端、网页和服务器技术栈。你可以在通用文件夹中使用公共组件。它使用firebase作为后端服务,但你可以更改为任何其他服务。


7

目前,由于React Native和React依赖于不同的UI代码(一个是本地UI代码,另一个是html DOM),因此无法共享代码库。有一个有趣的项目可以将两者结合起来(https://github.com/necolas/react-native-web),但它并不具备生产就绪性。


6

4
React Native 依赖于原生 UI 代码而不是 HTML,这意味着所有视图组件都需要重新编写。但是,如果您将所有逻辑保留在 Web 应用程序中的“愚蠢”功能组件之外,那么您应该能够重用大部分 Web 代码。
例如,您可能有一个外部容器,通过 componentDidMount 处理任何您想要在 mount 上发生的事情,处理和定义 onClick,并确定要渲染哪个视图组件。此代码可以在 Web 和移动端完全相同,然后您的“愚蠢”的函数视图组件将不同,因为一个使用本机视图元素,另一个使用HTML。

4

3
Web应用程序和本地应用程序的代码不能相同(或者您可能会使用WebView包装器作为应用程序)。我猜您之所以问这个问题是因为两个接口的功能是相同的。外观和感觉可以(几乎)相同。
如果您将应用程序仅视为视图,则后端(控制器和模型)可以与多个平台共享。您还可以尝试类似于Firebrand或Parse的后端服务。虽然这不是关于redux部分的答案,但它是一个简单的入门方式。

3

你可以在React和React Native之间共享大部分代码(特别是如果你使用react-native-web)。

试试这篇文章:http://jkaufman.io/react-web-native-codesharing/ 它提供了一个相当不错的示例,展示如何实现。

我强烈建议你保留大部分领域逻辑(API调用、flux甚至处理逻辑的Smart组件),只重写处理视图的dumb组件,以便为桌面或移动端实现最佳用户体验。

你可以像这样命名你的dumb组件视图文件:

MyComponent.js(用于web应用) MyComponent.native.js(用于native应用),或者如果你希望根据平台有不同的视图,则为MyComponent.ios.js和MyComponent.android.js。


3

我认为你可以重复使用一些代码,如果你的应用有些复杂,你可能会使用redux,像actions和reducers这样的东西很容易被重复使用。虽然UI组件本身不总是可重用的,但你可以重复使用一些支持它的东西。

正如timvp所提到的那样,你也可以使用WebViews来重复使用代码,但我不建议这样做,因为它没有本地模块的性能好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接