Vue3与Flask后端Demo

文章目录

准备工作
  1. 安装开发环境

    • 安装 Python(推荐 Python 3.8 或更高版本)。
    • 安装 Node.js(推荐 LTS 版本)。
    • 安装 PyCharm(用于 Flask 开发)和 VSCode(用于 Vue3 开发)。
    • 使用 npm 安装 Vue CLI:npm install -g @vue/cli
  2. 创建项目

    • Flask 项目 :在 PyCharm 中新建一个 Python 项目,并创建一个 app.py 文件。
    • Vue3 项目 :在命令行中运行 vue create vue3-flask-project 创建一个新的 Vue 3 项目。
Flask 后端设置
  1. 安装 Flask 和 Flask-CORS

    在 Flask 项目中,使用 pip 安装 Flask 和 Flask-CORS:

    bash 复制代码
    pip install flask flask-cors
  2. 编写 Flask 应用

    app.py 中,设置 Flask 应用并启用 CORS:

    python 复制代码
    from flask import Flask, jsonify
    from flask_cors import CORS
    
    app = Flask(__name__)
    CORS(app, resources={r"/*": {"origins": "*"}}, supports_credentials=True)
    
    @app.route('/api/data', methods=['GET'])
    def get_data():
        return jsonify({'message': 'Hello from Flask!'})
    
    @app.route('/api/login', methods=['POST'])
    def login():
        # 假设接收 JSON 数据
        data = request.get_json()
        # 这里可以添加数据库验证等逻辑
        return jsonify({'status': 'success', 'user': data.get('username')})
    
    if __name__ == '__main__':
        app.run(debug=True)
Vue3 前端设置
  1. 安装 Axios

    在 Vue3 项目中,使用 npm 安装 Axios:

    bash 复制代码
    npm install axios
  2. 配置 Axios

    在 Vue 组件中引入 Axios 并配置请求:

    vue 复制代码
    <template>
      <div>
        <h1>Vue3 with Flask Demo</h1>
        <button @click="fetchData">Fetch Data</button>
        <button @click="login">Login</button>
        <p v-if="message">{{ message }}</p>
      </div>
    </template>
    
    <script setup>
    import { ref } from 'vue';
    import axios from 'axios';
    
    const message = ref('');
    
    function fetchData() {
      axios.get('http://localhost:5000/api/data')
        .then(response => {
          message.value = response.data.message;
        })
        .catch(error => {
          console.error('Error fetching data:', error);
        });
    }
    
    function login() {
      axios.post('http://localhost:5000/api/login', {
        username: 'testuser',
        password: 'testpass' // 注意:实际应用中不应明文传输密码
      })
      .then(response => {
        message.value = `Login success: ${response.data.user}`;
      })
      .catch(error => {
        console.error('Error logging in:', error);
      });
    }
    </script>
  3. 运行项目

    • 在 PyCharm 中运行 Flask 应用(通常会自动打开 http://localhost:5000/)。
    • 在 VSCode 的 Vue 项目中,运行 npm run serve,这将启动 Vue 开发服务器(通常位于 http://localhost:8080/)。
跨域问题
  • 在 Flask 中,通过 Flask-CORS 插件已经处理了跨域请求。

  • 如果在 Vue 项目中遇到跨域问题,可以在 vue.config.js 文件中配置代理(如果使用 Vue CLI 3+):

    js 复制代码
    module.exports = {
      devServer: {
        proxy: {
          '/api': {
            target: 'http://localhost:5000',
            changeOrigin: true,
            pathRewrite: { '^/api': '' }
          }
        }
      }
    };

    配置后,Vue 中的请求可以简化为 axios.get('/api/data') 而无需指定完整的 URL。

测试
  • 点击 Vue 页面上的 "Fetch Data" 按钮,查看是否能从 Flask 后端获取数据并显示。
  • 点击 "Login" 按钮,查看是否能成功发送 POST 请求并处理返回的数据。

这样,你就完成了 Vue3 与 Flask 后端的基本配合设置,并能够通过实例看到前后端数据交互的过程。

相关推荐
程序员爱钓鱼3 分钟前
Go 输入输出详解
后端·面试·go
UQR9 分钟前
一、Java基础高频面试题
java·开发语言
AC赳赳老秦10 分钟前
网页公开附件自动采集:OpenClaw 批量下载页面内嵌 Word/Excel 附件,统一格式后结构化入库
java·python·word·php·excel·deepseek·openclaw
北斗落凡尘10 分钟前
LangGraph 入门实战(3)
python·langchain
程序员爱钓鱼11 分钟前
Rust 生命周期详解:生命周期标注、约束与真实项目应用
后端·面试·rust
MoonBit月兔13 分钟前
MoonBit 受邀亮相 SPLASH/ISSTA 2026,与 Java、Rust、Eiffel、D 语言核心贡献者同场交流
开发语言·后端·rust
知识分享小能手16 分钟前
线性代数学习教程,从入门到精通,矩阵及其运算 — 完整知识点与详细推导(3)
学习·线性代数·矩阵
必须会一定会18 分钟前
用纯 HTML/JS 做一个 AI 需求澄清器:把模糊想法转换成可执行任务书
开发语言·前端·javascript·人工智能·html·ai编程
TAN-90°-21 分钟前
Deep Learning for Computer Vision——Image Classification with Linear Classifiers
python·深度学习·算法·计算机视觉·线性回归
AINative软件工程23 分钟前
LLM API 成本失控怎么办?工程师的实时异常检测指南
python