【问题标题】:Transitioning from a Django-Rest/React project to a Django-Rest/React Native project从 Django-Rest/React 项目过渡到 Django-Rest/React Native 项目
【发布时间】:2019-07-19 07:43:21
【问题描述】:

所以我一直在做一个项目,该项目的后端是用 Django/Django-Rest 编写的,而前端目前是用 React 编写的。这很棒,但该项目的总体目标应该是一个移动应用程序,我们已经转向 React Native。我没有看到很多关于在 React 和 React Native 之间转换的资源。

它们有多相似?是否有可能将我们的任何前端代码从 React 移植到 React Native?你甚至可以将 Django/Django-REST 后端集成到 React Native 前端吗?

我知道这些是一些非常开放式的问题,但我还没有找到大量相关资源,因此我们将不胜感激。

谢谢

【问题讨论】:

    标签: django reactjs react-native django-rest-framework


    【解决方案1】:

    确实是一个非常广泛的问题,但我会给出我的意见:

    [React Native 和 React] 有多相似?

    两者都依赖于 React 组件及其生命周期,并且它们是用相同的语言编写的。然而,React Native 是被编译为本机代码的 JS。由于这个限制,在 React 中有效的 HTML 不在 React Native 中。此外,CSS 必须以纯 JS 样式编写,并且某些样式属性在本机中根本不存在(例如,displayflexnone)。示例:

    // React
    import React from 'react';
    
    class MyComponent extends React.Component {
      render() {
        return (
          <div style="background-color: red">
            hello world
          </div>
        )
      }
    }
    
    // React Native
    import React from 'react';
    import { Text } from 'react-native';
    
    class MyComponent extends React.Component {
      render() {
        return (
          <Text style={{backgroundColor: 'red'}}>
            hello world
          </Text>
        )
      }
    }
    

    除此之外,还有很多 React 的东西可以在 React Native 中重用,比如 react-redux 等等。

    大多数面向接口的库根本无法在 React Native 中工作,因为 DOM 操作是不同的。从 React 完全过渡到 React-Native 并不总是可行的,有时它需要对一堆令人讨厌的小东西进行大量的重写(在 Native 中没有 display: block,记得吗??)

    您甚至可以将 Django/Django-REST 后端集成到 React Native 前端吗?

    比较复杂。

    React Native 生成​​独立的应用程序,因此它不需要任何服务器来为其提供服务。

    对于整个与 API 的交互,您仍然可以在某些服务器上提供您的 API 并从您的 React Native 应用程序访问它。不用担心(但要小心 CORS)。

    如果你只想将你的应用从 React 移植到 React Native,那就结束了。但请记住:React Native 生成​​独立的应用程序,您可以使用它来使 React Native 发出自己的 HTTP 请求,而无需传递某些调用的 API!此外,它可以在本地存储数据,因此可能会保存一些后端调用(登录、配置文件信息检索等)!这可能包括一些重构,但您将构建一个更快、更便宜的应用程序。


    还有很多话要说,但是如果没有关于您的应用程序结构的任何进一步细节,就很难提供有关移植应用程序的更多建议和细节。希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2020-01-07
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 1970-01-01
      相关资源
      最近更新 更多