我的问题是:我需要写两个相同的应用程序吗(一个用React开发网页,一个用React Native开发移动端)?
我看到了一些可以在网页上共享React Native组件的库,但我感觉会有一些限制。
你觉得呢?
编辑:还有一个问题 使用React,我会使用Flux(现在可能是Redux),那么为了保持我的React Native应用程序的整洁和可读性,我应该怎么处理数据?非常感谢你们的回答。
我现在也在做同样的事情 - 我没有分享代码库,因为Web /移动应用程序的内容是不同的 - 我使用Web进行管理,移动应用程序用于查看内容。
React Native使用本地视图UIView、Text等进行显示。你不能将相同的代码库用于它们。 React Native使用flex box(它有自己的实现),因此这也不适用于Web React项目。
唯一的方法是将它们分开。同时,Web和App会有不同的设计。
我知道这可能是一个晚回答,但将来会有帮助。请查看 https://github.com/este/este,它有不同的移动端、网页和服务器技术栈。你可以在通用文件夹中使用公共组件。它使用firebase作为后端服务,但你可以更改为任何其他服务。
目前,由于React Native和React依赖于不同的UI代码(一个是本地UI代码,另一个是html DOM),因此无法共享代码库。有一个有趣的项目可以将两者结合起来(https://github.com/necolas/react-native-web),但它并不具备生产就绪性。
虽然 React Native 和 React JS 不能使用完全相同的代码,但您可以架构代码库以尽可能多地重用代码。查看此项目:
https://github.com/benoitvallon/react-native-nw-react-calculator
你可以在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。
我认为你可以重复使用一些代码,如果你的应用有些复杂,你可能会使用redux,像actions和reducers这样的东西很容易被重复使用。虽然UI组件本身不总是可重用的,但你可以重复使用一些支持它的东西。
正如timvp所提到的那样,你也可以使用WebViews来重复使用代码,但我不建议这样做,因为它没有本地模块的性能好。