如何将Django API项目与nodejs集成并对前端做出反应?

时间:2017-03-22 05:05:39

标签: javascript python node.js django reactjs

我在Django中有一个API项目,我希望将节点js与django一起使用,并知道你是否可以将两者结合使用来实现我的应用程序的前端,如果可能的话,建议开发应用这种方式?或者哪个是使用这些技术的更好选择?

在django我使用

- > Django Rest Framework

节点js我想用它来为我的应用程序提供实时

- > Socket.io

阵营

- >终极版 - >阵营路由器

非常感谢您的时间和关注。

1 个答案:

答案 0 :(得分:1)

解决方案是放弃单页应用程序模型,而是让Django单独为每个页面提供服务,每个页面都有一个根React组件。我们在页面之间不变的基站组件(例如导航栏,页脚)由Django模板提供,每个页面特定的内容(例如扑克界面,排行榜)由React组成。

  1. 放弃SPA,为什么你会说这么可怕的事情?! 单页应用程序并不总是解决方案,我们通过Django处理页面样板和路由来获得稳定性(错误仅限于一页),更容易调试,轻松搜索引擎索引以及更轻松的静态页面管理
  2. 当您在Django模板中拥有所有页面样板时,为静态内容(例如,关于页面,登录页面)创建非React页面要容易得多
  3. 无需处理React路由器,历史API或幕后异步提取页面内容(更多关于如何在以后的帖子中进行页面热加载而不刷新)
  4. React Component

    `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
    )
    view rawleaderboard.js hosted with ❤ by GitHub`