reactjs - React JS Web 代码可以用于使用 React Native 构建移动应用程序吗?

标签 reactjs web react-native

我正在开发一个宠物项目(网络应用程序),我想知道是否应该使用 React,因为从这段代码创建 native 应用程序会很容易(如果我需要的话,将来会这样做)。

  • 如果答案是肯定的,那么应遵循的最佳实践是什么 最多重用?

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

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

我对 React 还比较陌生,我的替代方案是使用 bootstrap 和 jquery 的 ol' html。我正在考虑使用 asp.net mvc 和 web api。

最佳答案

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

在我看来,这是一个很好的选择。我将为您提供该方法的概述和一些建议。

在理想的世界中,我们能够共享 100% 的代码。据我所知,这是不可能的,但我们仍然可以共享很多代码。虽然 React Native 与 React 类似,但需要注意的是渲染代码不同。相反,网络内容如 <div><span> ,您使用 React Native 组件,如 <View> , <Text>和其他内置组件。

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

计划

根据您正在使用的 Flux 架构,这意味着您的存储、 reducer 、操作将是共享代码,以及大多数业务逻辑(服务内部或其他)以及常量和实用程序.

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

一些一般准则/建议

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

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

    • On iOS simulators and devices, Android emulators and devices. React Native uses JavaScriptCore which is the JavaScript engine that powers Safari. On iOS JSC doesn't use JIT due to the absence of writable executable memory in iOS apps.
    • When using Chrome debugging, it runs all the JavaScript code within Chrome itself and communicates with native code via WebSocket. So you are using V8.

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

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

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

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

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

关于reactjs - React JS Web 代码可以用于使用 React Native 构建移动应用程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41134839/

相关文章:

reactjs - 我可以将我的组件附加到 ReactJS 中 div 的现有内容中吗?

javascript - react.js 和 WebRTC RTCPeerConnection.addStream 不是对象

tomcat - gzip 后的网络资源在网络检查工具/chrome 开发人员工具中是否有较小的 "size"?

http - 最后修改与过期优先级

javascript - 每隔一段时间更改对象类名不起作用

ios - react native fbsdk: "ld: library not found for -l-lRNSDKCoreKit"

android - React Native 模块 (Android) - TypeError : undefined is not an object

reactjs - React Nuka slider 在哪里放置装饰器?

android - react 导航 3 抽屉行为问题

reactjs - React 未命中 kubernetes 集群上的 django api