国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue 和 Flask 前后端分離教程(一)

這篇具有很好參考價值的文章主要介紹了Vue 和 Flask 前后端分離教程(一)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Vue 和 Flask 前后端分離教程(一)

在本教程中,我們將學(xué)習(xí)如何使用 Vue.js(前端框架)和 Flask(后端框架)構(gòu)建一個簡單的前后端分離應(yīng)用。本教程假設(shè)你對 HTML、CSS 和 JavaScript 有基本了解。讓我們開始吧!

如果對Flask和Vue還不太熟悉,可以選擇查看博主之前的教學(xué)文章:

  • Flask 基礎(chǔ)教學(xué)(一)
  • Flask基礎(chǔ)教學(xué)(二)
  • Vue.js基礎(chǔ)教學(xué)

1. 準(zhǔn)備工作

  1. 安裝 Node.js (https://nodejs.org/),安裝完成后,通過命令行運行 node -vnpm -v 檢查是否安裝成功。
  2. 安裝 Vue CLI:在命令行中輸入 npm install -g @vue/cli
  3. 安裝 Python (https://www.python.org/downloads/),安裝完成后,通過命令行運行 python --version 檢查是否安裝成功。
  4. 安裝 Flask:在命令行中輸入 pip install Flask。

2. 創(chuàng)建項目

創(chuàng)建一個文件夾,用來存儲項目,例如myapp,之后的文件夾都myapp這里面創(chuàng)建。

2.1 創(chuàng)建前端項目

  1. 進(jìn)入myapp文件夾,在命令行中輸入 vue create myapp-frontend,選擇Vue3
  2. 進(jìn)入項目目錄:cd myapp-frontend。
  3. 運行項目:npm run serve,在瀏覽器中訪問 http://localhost:8080 查看效果。

2.2 創(chuàng)建后端項目

  1. 進(jìn)入myapp文件夾,在命令行中創(chuàng)建一個新的目錄:mkdir myapp-backend。

  2. 進(jìn)入項目目錄:cd myapp-backend

  3. 創(chuàng)建一個名為 app.py 的文件,內(nèi)容如下:

    # 導(dǎo)入 Flask
    from flask import Flask, jsonify
    # 導(dǎo)入 CORS
    from flask_cors import CORS
    
    # 創(chuàng)建一個 Flask 應(yīng)用實例
    app = Flask(__name__)
    # 并允許來自所有域的請求
    CORS(app)
    
    # 定義一個簡單的路由
    @app.route('/api/data', methods=['GET'])
    def get_data():
        # 創(chuàng)建一個字典作為模擬數(shù)據(jù)
        data = {
            "message": "Hello from Flask!",
            "items": [
                {"id": 1, "name": "Item 1"},
                {"id": 2, "name": "Item 2"},
                {"id": 3, "name": "Item 3"}
            ]
        }
        # 將字典轉(zhuǎn)為 JSON 并返回
        return jsonify(data)
    
    # 如果作為主程序運行,啟動應(yīng)用
    if __name__ == '__main__':
        app.run(debug=True)
    
  4. 運行項目:python app.py,在瀏覽器中訪問 http://localhost:5000/api/data 查看效果。

3. 前后端交互

3.1 前端請求數(shù)據(jù)

  1. myapp-frontend 目錄下,安裝 axiosnpm install axios。

  2. src 目錄下創(chuàng)建一個名為 services 的新目錄。

  3. services 目錄下創(chuàng)建一個名為 DataService.js的文件,內(nèi)容如下:

    // 導(dǎo)入 axios
    import axios from 'axios';
    
    // 創(chuàng)建一個 axios 實例,用于發(fā)送請求
    const apiClient = axios.create({
      // 設(shè)置后端 API 的基礎(chǔ) URL
      baseURL: 'http://localhost:5000/api',
      // 設(shè)置請求頭
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
      },
    });
    
    // 定義一個用于獲取數(shù)據(jù)的函數(shù)
    export default {
      getData() {
        // 向 '/data' 路由發(fā)送 GET 請求
        return apiClient.get('/data');
      },
    };
    

**請求頭(Request Headers)**是在發(fā)送 HTTP 請求時,客戶端向服務(wù)器發(fā)送的一組鍵值對。它們提供有關(guān)請求的元數(shù)據(jù),例如請求類型、內(nèi)容類型以及客戶端想要接收的響應(yīng)格式等。請求頭有助于服務(wù)器了解如何處理傳入的請求,并提供相應(yīng)的響應(yīng)。

在上面的代碼片段中,請求頭包含兩個鍵值對:

  1. Accept: 'application/json':這個鍵值對表示客戶端(這里是您的 Vue.js 應(yīng)用程序)希望從服務(wù)器接收 JSON 格式的數(shù)據(jù)。服務(wù)器可以根據(jù)此信息返回適當(dāng)格式的數(shù)據(jù)。此外,如果服務(wù)器無法提供 JSON 格式的數(shù)據(jù),它還可以返回一個適當(dāng)?shù)腻e誤消息。
  2. 'Content-Type': 'application/json':這個鍵值對表示客戶端發(fā)送給服務(wù)器的數(shù)據(jù)的類型是 JSON。這有助于服務(wù)器了解如何解析請求中包含的數(shù)據(jù),并根據(jù)需要進(jìn)行處理。

這些請求頭在 DataService.js 文件中的 axios 實例中設(shè)置,以確保與 Flask 后端服務(wù)器之間的通信遵循這些規(guī)則。當(dāng)您的應(yīng)用程序向后端發(fā)送請求時,axios 會自動包含這些請求頭。

3.2 顯示后端數(shù)據(jù)

  1. 打開 myapp-frontend/src/components/HelloWorld.vue 文件。

  2. 刪除 <script> 標(biāo)簽內(nèi)的 props 部分。

  3. 導(dǎo)入 DataService 并在 created 鉤子中調(diào)用 getData 函數(shù)。修改后的 <script> 標(biāo)簽如下:

    // 導(dǎo)入 DataService
    // 導(dǎo)入 ref 和 onMounted
    import { ref, onMounted } from 'vue';
    import DataService from '../services/DataService.js';
    
    export default {
      name: 'HelloWorld',
      setup() {
        // 初始化數(shù)據(jù)
        const message = ref('');
        const items = ref([]);
    
        //定義一個異步函數(shù)來獲取數(shù)據(jù)
        const fetchData = async () => {
          try {
            const response = await DataService.getData();
            // 將獲取的數(shù)據(jù)設(shè)置為組件的 data 屬性
            message.value = response.data.message;
            items.value = response.data.items;
          }catch(error){
            console.error(error);
          }
        };
    
        // 在組件掛載時調(diào)用 fetchData 函數(shù)
        onMounted(fetchData);
    
        // 返回數(shù)據(jù),以便在模板中使用
        return {message, items};
      },
    };
    
    • export default:這是一個 JavaScript 模塊導(dǎo)出,使得其他文件可以導(dǎo)入和使用這個組件。
    • name: 'HelloWorld':這是組件的名稱,有助于在調(diào)試和組件樹中識別組件。
    • setup() {}:這是 Vue 3 Composition API 的核心函數(shù)。它在組件實例創(chuàng)建之前運行,用于設(shè)置組件的響應(yīng)式數(shù)據(jù)和邏輯。
    • const message = ref('')const items = ref([]):這里,我們使用 ref() 函數(shù)創(chuàng)建了兩個響應(yīng)式引用,分別用于存儲從服務(wù)器獲取的消息和項目列表。ref() 是 Vue 3 Composition API 的一部分,用于創(chuàng)建響應(yīng)式數(shù)據(jù)。
    • const fetchData = async () => {}:這是一個異步函數(shù),用于從服務(wù)器獲取數(shù)據(jù)。它使用 async/await 語法處理異步操作。
    • const response = await DataService.getData():此行代碼調(diào)用 DataService.js 中定義的 getData() 函數(shù),發(fā)送請求到服務(wù)器以獲取數(shù)據(jù)。因為這是一個異步操作,所以使用了 await。
    • message.value = response.data.messageitems.value = response.data.items:這兩行代碼將從服務(wù)器獲取的數(shù)據(jù)分別賦值給 messageitems 響應(yīng)式引用。
    • onMounted(fetchData):這里,我們使用 onMounted() 生命周期鉤子,在組件掛載后(即插入 DOM 之后)調(diào)用 fetchData 函數(shù)。onMounted() 是 Vue 3 Composition API 的一部分,用于在特定生命周期階段執(zhí)行函數(shù)。
    • return {message, items}:在 setup() 函數(shù)的最后,我們返回一個對象,包含響應(yīng)式引用 messageitems。這使得它們可以在組件的模板中使用。例如,<h1>{{ message }}</h1><li v-for="item in items" :key="item.id">{{ item.name }}</li>。
  4. 修改 <template> 標(biāo)簽,顯示后端數(shù)據(jù)。修改后的 <template> 標(biāo)簽如下:

    <template>
      <div class="hello">
        <h1>{{ message }}</h1>
        <ul>
          <!-- 遍歷 items 數(shù)組,顯示每個元素的內(nèi)容 -->
          <li v-for="item in items" :key="item.id">{{ item.name }}</li>
        </ul>
      </div>
    </template>
    
  5. App.vue <template> 標(biāo)簽中HelloWorld的msg刪除,修改后的 <template> 標(biāo)簽如下:

    <template>
      <HelloWorld />
    </template>
    

現(xiàn)在,打開兩個終端,一個在myapp-backend文件夾下的命令行輸入python app.py啟動前端項目,另一個在myapp-frontend文件夾下的命令行輸入npm run serve啟動后端項目,訪問 http://localhost:8080,你應(yīng)該可以看到從后端獲取的數(shù)據(jù)顯示在頁面上。

文件夾下的命令行輸入npm run serve啟動后端項目,訪問http://localhost:8080`,你應(yīng)該可以看到從后端獲取的數(shù)據(jù)顯示在頁面上。

最后效果如下:

vue+flask 博客,Vue,Flask,flask,vue.js,前端文章來源地址http://www.zghlxwxcb.cn/news/detail-857884.html

到了這里,關(guān)于Vue 和 Flask 前后端分離教程(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • SpringBoot + Vue前后端分離項目實戰(zhàn) || 一:Vue前端設(shè)計

    SpringBoot + Vue前后端分離項目實戰(zhàn) || 一:Vue前端設(shè)計

    系列文章: SpringBoot + Vue前后端分離項目實戰(zhàn) || 一:Vue前端設(shè)計 SpringBoot + Vue前后端分離項目實戰(zhàn) || 二:Spring Boot后端與數(shù)據(jù)庫連接 SpringBoot + Vue前后端分離項目實戰(zhàn) || 三:Spring Boot后端與Vue前端連接 SpringBoot + Vue前后端分離項目實戰(zhàn) || 四:用戶管理功能實現(xiàn) SpringBoot + Vue前后

    2024年02月09日
    瀏覽(99)
  • 【Python成長之路】基于Flask-admin庫,結(jié)合html+vue,實現(xiàn)前后端數(shù)據(jù)傳遞

    【Python成長之路】基于Flask-admin庫,結(jié)合html+vue,實現(xiàn)前后端數(shù)據(jù)傳遞

    前面已經(jīng)做了Flask-admin庫的基本介紹和幾個庫常用功能如何使用,若不了解請移步到以下博客: 1、?《【Python成長之路】基于Flask-admin庫,編寫個人工作平臺代碼詳述》 2、?《【Python成長之路】基于Flask-admin庫,編寫個人工作平臺代碼 -- 進(jìn)階版》 此篇文章主要是講述: 1、結(jié)合

    2024年02月02日
    瀏覽(19)
  • 后端SpringBoot+前端Vue前后端分離的項目(二)

    后端SpringBoot+前端Vue前后端分離的項目(二)

    前言:完成一個列表,實現(xiàn)表頭的切換,字段的篩選,排序,分頁功能。 目錄 一、數(shù)據(jù)庫表的設(shè)計 二、后端實現(xiàn) 環(huán)境配置 model層 ?mapper層 service層 ?service層單元測試 controller層 三、前端實現(xiàn) interface接口 接口api層 主要代碼 效果展示 引入mybatis-plus依賴 MerchandiseDetailsService文

    2024年02月09日
    瀏覽(94)
  • 后端SpringBoot+前端Vue前后端分離的項目(一)

    后端SpringBoot+前端Vue前后端分離的項目(一)

    前言:后端使用SpringBoot框架,前端使用Vue框架,做一個前后端分離的小項目,需求:實現(xiàn)一個表格,具備新增、刪除、修改的功能。 目錄 一、數(shù)據(jù)庫表的設(shè)計 二、后端實現(xiàn) 環(huán)境配置 數(shù)據(jù)處理-增刪改查 model層 mapper層 XML配置 Service層 controller層 單元測試 三、前后端交互 配置

    2024年02月10日
    瀏覽(95)
  • vue.js畢業(yè)設(shè)計,基于vue.js前后端分離訂座預(yù)約小程序系統(tǒng) 開題報告

    ? 畢業(yè)論文 基于Vue.js預(yù)約訂座小程序系統(tǒng) 開題報告 學(xué)??? 院: ?????????????????????? 專??? 業(yè): ? ????????????????? ???? 年??? 級: ???????????????????? ?? 學(xué)生姓名: ?????????????????????? 指導(dǎo)教師: ????? 黃菊華?? ?

    2024年02月07日
    瀏覽(23)
  • .NET8 和 Vue.js 的前后端分離

    .NET8 和 Vue.js 的前后端分離

    在.NET 8中實現(xiàn)前后端分離主要涉及到兩個部分:后端API的開發(fā)和前端應(yīng)用的開發(fā)。后端API通常使用ASP.NET Core來構(gòu)建,而前端應(yīng)用則可以使用任何前端框架或技術(shù)棧,比如Vue.js、React或Angular等。下面是一個簡化的步驟指南,幫助你在.NET 8中實現(xiàn)前后端分離。 下面是一個簡單的示

    2024年04月10日
    瀏覽(21)
  • 「網(wǎng)頁開發(fā)|前端開發(fā)|Vue」07 前后端分離:如何在Vue中請求外部數(shù)據(jù)

    「網(wǎng)頁開發(fā)|前端開發(fā)|Vue」07 前后端分離:如何在Vue中請求外部數(shù)據(jù)

    本文主要介紹兩種在Vue中訪問外部API獲取數(shù)據(jù)的方式,通過讓Vue通過項目外部的接口來獲取數(shù)據(jù),而不是直接由項目本身進(jìn)行數(shù)據(jù)庫交互,可以實現(xiàn)前端代碼和后端代碼的分離,讓兩個部分的代碼編寫更獨立高效。 「網(wǎng)頁開發(fā)|前端開發(fā)|Vue」01 快速入門:快速寫一個Vue的

    2024年02月09日
    瀏覽(41)
  • 若依vue(前后端分離版本)前端獲取登錄用戶id

    若依vue(前后端分離版本)前端獲取登錄用戶id

    1.找到user.js 2.在user.js中找到以下幾個地方 屬性:state{} 屬性:mutations{} 函數(shù):GetInfo() 3.在user.js中添加代碼? 4.在自己的頁面中添加獲取id的代碼 在該若依的版本中,從下列目錄找到,ruoyi-ui-src-store-modules-user.js 屬性state在頁面中的位置 還有mutations 最后是GetInfo方法 步驟三 到此

    2024年04月12日
    瀏覽(94)
  • SpringBoot + Vue前后端分離項目實戰(zhàn) || 三:Spring Boot后端與Vue前端連接

    SpringBoot + Vue前后端分離項目實戰(zhàn) || 三:Spring Boot后端與Vue前端連接

    系列文章: SpringBoot + Vue前后端分離項目實戰(zhàn) || 一:Vue前端設(shè)計 SpringBoot + Vue前后端分離項目實戰(zhàn) || 二:Spring Boot后端與數(shù)據(jù)庫連接 SpringBoot + Vue前后端分離項目實戰(zhàn) || 三:Spring Boot后端與Vue前端連接 SpringBoot + Vue前后端分離項目實戰(zhàn) || 四:用戶管理功能實現(xiàn) SpringBoot + Vue前后

    2024年02月12日
    瀏覽(47)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包