创建 Flask 和 React 全栈应用程序

Create a Flask and React Full Stack Application

如何使用 React 前端和 Flask 后端创建网站?

我用flask和模板建过网站,用react做过页面,现在想把它们结合起来。

我已经尝试了一些方法,唯一有效的方法需要进入反应配置文件并且非常复杂。即使那样,使用 fetch 也很复杂,每次更改反应文件时我都必须 运行 npm 运行 build。

在我看来,这似乎是一直都在做的事情,但我找不到任何简单的资源来做这件事。

关于网站,有什么我根本不了解的地方,我的做法是错误的吗?

专注于开发工作流,因为在如何部署到生产环境方面有无数选择。

运行 以 /api 作为根 url 前缀的 Flask 应用程序,可以手动为所有路由装饰器添加前缀,也可以使用蓝图。

py/app.py

@app.route('/api')
def index():
    return {'message':'hello'}

将 Flask 开发服务器 url 添加到您的 package.json 文件

js/package.json

{
    ...,
    "proxy": "http://localhost:5000"
}

使用组件获取数据

js/Flask.js

import React, { Component } from 'react'

export class Flask extends Component {
    constructor(props) {
        super(props)
        this.state = { data: {}, status: null }
    }

    fetchData() {
        let status
        fetch('/api')
        .then((res) => {
            return {
                data: res.json(),
                status: status
            }
        })
        .then((data) => {
            this.setState({ ...data })
        }
        .catch((err) => {
            console.error(err)
        })
    }

    componentDidMount() {
        this.fetchData()
    }

    render() {
        const { data, status } = this.state
        return (
            <div>
                <h3>Status: { status }</h3>
                <pre>
                    { JSON.stringify(data) }
                </pre>
            </div>
        )
    }
}

export default Flask

最后,将组件包含在您的主组件中 App

js/App.js

import React from 'react';
import Flask from './Flask'

function App() {
  return (
    <div className="App">
      <Flask />
    </div>
  );
}

export default App;

使用您喜欢的方法启动您的 Flask 服务器,flask run 或直接执行您的脚本,然后使用 yarnnpm start 启动您的 JS 开发服务器。您应该会在 http://localhost:8000

处看到 api 路由的响应

只要你是 运行 你的 Flask 服务器 debug=True 并使用 npm start不是 npm run build),将自动检测后端或前端所做的任何更改并重新加载您的应用程序。