Vue与flask实现前后端分离

感谢GitHub的大神Mcbai的分享

首先,flask这里渲染的是Vue编译后的文件,即运行了npm run build后的文件。接下来上工程的路径结构:

project
    | -- backend       // backend 文件夹作为后端文件的根目录
    | -- dist          // dist 文件夹里放的是前端打包的最终代码,也就是 npm run build 生成的代码
    | -- frontend      // frontend 自然就是存放前端开发环境的代码了。

fontend就是使用Vue-cli所生成的前端工程:其结构如下:
Vue与flask实现前后端分离_第1张图片
前端工程的结构

接下来注意修改Vue工程编译生成的文件路径,这样在执行 npm run build 进行生产打包时,文件就能输出到我们想要的位置了。

安装 flask-cors,用来解决开发时的跨域问题:

pip install flask-cors

后端代码:

# run.py

'''
    render_template 是渲染模板用的,这里我们用来返回 index.html
    flask_cors 用来解决跨域的问题
'''
from flask import Flask, render_template
from flask_cors import CORS

# 通过 static_folder 指定静态资源路径,以便 index.html 能正确访问 CSS 等静态资源
# template_folder 指定模板路径,以便 render_template 能正确渲染 index.html
APP = Flask(
    __name__, static_folder="../dist/static", template_folder="../dist")

CORS(APP)


@APP.route("/")
def home():
    '''
        当在浏览器访问网址时,通过 render_template 方法渲染 dist 文件夹中的 index.html。
        页面之间的跳转交给前端路由负责,后端不用再写大量的路由
    '''
    return render_template('index.html')


@APP.route('/test', methods=['GET', 'POST'])
def test():
    ''' 这个API用来测试跨域 '''
    return 'success'


if __name__ == '__main__':
    # 开启 debug模式,这样我们就不用每更改一次文件,就重新启动一次服务
    # 设置 host='0.0.0.0',让操作系统监听所有公网 IP
    # 也就是把自己的电脑作为服务器,可以让别人访问
    APP.run(debug=True, host='0.0.0.0')

你可能感兴趣的:(Vue与flask实现前后端分离)