可以使用反应本机来反应js web代码来构建移动应用程序吗?

ps.*_*ps. 11 web reactjs react-native

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

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

  • 如果答案是否定的,你能推荐一个替代方案吗?

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

我的反应相对比较新,而且我的替代方案将是带有bootstrap和jquery的好用的.我正在考虑使用asp.net mvc和web api.

Kal*_*sev 13

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

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

在理想的世界中,我们将能够共享100%的代码.据我所知,这是不可能的,但我们仍然可以分享很多代码.尽管React Native与React类似,但请注意渲染代码是不同的非常重要.相反,web之类的东西,<div>或者<span>你使用React Native组件<View>,<Text>以及其他内置组件.

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

计划

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

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

一些一般准则/建议

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

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

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

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

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

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

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

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

  • @MartinMazzaDawson是不可能的,因为Web和移动的渲染代码是不同的.相反,像移动设备上的`<div>`或`<span>`这样的网页,我们使用React Native组件,如`<View>`,`<Text>`和其他代表移动特定项目的内置组件. (2认同)