【问题标题】:How to integrate Django API project with nodejs and react on frontend?如何将 Django API 项目与 nodejs 集成并在前端做出反应?
【发布时间】:2017-03-22 05:05:39
【问题描述】:
我在 Django 中有一个 API 项目,我想将 node js 与 django 一起使用,并且知道您是否可以结合使用 react 来实现我的应用程序的前端,如果可能的话,建议开发这样申请?或者哪个是使用这些技术的更好选择?
在 django 中我正在使用
->Django Rest 框架
Node js 我想用它来为我的应用程序提供实时性
-->Socket.io
反应
-->Redux
-->反应路由器
非常感谢您的时间和关注。
【问题讨论】:
标签:
javascript
python
node.js
django
reactjs
【解决方案1】:
解决方案是放弃单页面应用程序模型,而是让 Django 单独服务每个页面,每个页面都有一个根 React 组件。我们的基本站点组件不会在页面之间更改(例如导航栏、页脚)由 Django 模板提供,并且特定于每个页面的内容(例如扑克界面、排行榜)在 React 中组成。
- 放弃SPA,你为什么要说这么可怕的话?!
单页应用程序并不总是解决方案,我们通过 Django 处理页面样板和路由,获得了稳定性(错误仅限于一页)、更轻松的调试、轻松的搜索引擎索引和更轻松的静态页面管理
- 当您在 Django 模板中拥有所有页面样板时,为静态内容(例如关于页面、登录页面)创建非 React 页面会容易得多
- 无需在后台处理 React 路由器、History API 或异步获取页面内容(稍后将详细介绍我们如何在不刷新的情况下进行页面热加载)
对于 React 组件
import React from 'react'
import ReactDOM from 'react-dom'
const Leaderboard = ({users}) =>
<div>
<h1>Featured Players</h1>
{users.map(user =>
<a href={`/user/${user.username}/`}>
{user.username}
</a>)}
</div>
ReactDOM.render(
React.createElement(Leaderboard, window.props), // gets the props that are passed in the template
window.react_mount, // a reference to the #react div that we render to
)