独立的 REST API 和独立的 React SPA 与 Django 和 React 的结合

Posted

技术标签:

【中文标题】独立的 REST API 和独立的 React SPA 与 Django 和 React 的结合【英文标题】:Standalone REST API & Standalone React SPA vs Django and React combined 【发布时间】:2020-04-26 12:27:11 【问题描述】:

我想创建一个 React SPA,它通过查询 Django REST API 来提供。 我在看this,遇到了这点:

我看到以下模式(几乎每个 Web 框架都很常见):

    React 在自己的“前端”Django 应用程序中:加载单个 html 模板并让 React 管理前端(难度:中等) Django REST 作为独立 API + React 作为独立 SPA(难度:难,涉及到 JWT 进行身份验证) 混搭:Django 模板中的迷你 React 应用程序(难度:简单)

似乎如果是 SPA(单页应用程序),最好选择 1。据我了解,React 应用程序只是一个包含所有必需 css、html 和 js 的大文件,对吧?

所以我们只需要创建这个文件,并在 Django 应用程序的特定端点上提供它。然后,我不明白“独立”做事方式的好处。我们需要两个不同的域,这会导致身份验证问题,而独立的 SPA 实际上只是提供静态文件,对吗?为什么使用独立的 SPA 会很有趣?

但是当我阅读React in Django or React as a standalone?时,建议保持前后端分离。我想知道我缺少什么,以及创建独立的 React SPA 有什么好处。 reactjs - React in Django or React as a standalone? - Stack Overflow 提到它将允许后端被不同的应用程序重用,但我不明白如果后端提供静态文件,什么会阻止我的后端被重用。我的后端不会消失,它还会在这里,可以重复使用,对吧?

【问题讨论】:

【参考方案1】:

pt1。是的,React 应用程序捆绑在几个文件中,您可以在 html 模板中使用这些文件

pt2。如果您已经有一个大型 Django 项目正在运行,并且您无法负担将所有内容迁移到 React SPA 的费用,那么独立会很有趣

pt3.您说后端只是另一个提供内容的应用程序是正确的,并且可以像任何其他 API 一样访问。不同之处在于所服务的内容:在创建 React SPA 时,后端只关心请求了哪些数据以及需要将哪些数据持久化到数据库中。现在您的前端代码可以专注于特定的前端问题,例如用户体验和用户的浏览/导航:例如使用 Redux 存储,您可以在其中将 JWT 令牌存储在浏览器会话中,或者缓存已经检索到的可能是在其他页面上有用。这大大减轻了后端的负担,因为您不需要两次发送相同的数据。

【讨论】:

以上是关于独立的 REST API 和独立的 React SPA 与 Django 和 React 的结合的主要内容,如果未能解决你的问题,请参考以下文章

部署在 Tomcat 上的 Spring Boot Rest API 提供 404 但独立工作一切正常

React 顶层 API

结合 REST API 和 RPC

REST API 的认证和授权设计

react+webpack+scss 怎么编译css独立文件

将JSON对象转换为REST API