欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Vue與Spring?Boot前后端是怎么對(duì)接起來(lái)的

 更新時(shí)間:2025年06月19日 09:41:43   作者:snowfoootball  
這篇文章主要介紹了Vue與Spring?Boot前后端是怎么對(duì)接起來(lái)的相關(guān)資料,通過(guò)Vue與SpringBoot案例演示Axios調(diào)用接口,強(qiáng)調(diào)職責(zé)分離與工程結(jié)構(gòu),需要的朋友可以參考下

前言

很多剛學(xué)習(xí)前端(HTML/CSS/JS/Vue)或者后端(Java/Spring Boot)的朋友,都會(huì)遇到一個(gè)共通的困惑:

“我能寫(xiě)頁(yè)面,也能寫(xiě)接口,但它們?cè)趺催B起來(lái)的?”

本篇文章就為你解鎖介紹這個(gè)最基礎(chǔ)的知識(shí)點(diǎn),從前后端分離的思想入門(mén),到Vue 使用 Axios 調(diào)用 Spring Boot 接口的案例,一步步帶你搞定。

一、什么是前后端分離?

1. 傳統(tǒng)開(kāi)發(fā)模式:頁(yè)面與接口混在一起

在早期的 Web 應(yīng)用開(kāi)發(fā)中,前端頁(yè)面和后端邏輯常常緊密耦合在一起。例如,一個(gè) Java Web 項(xiàng)目往往采用 JSP 頁(yè)面 + Servlet 或 Spring MVC Controller 的模式。用戶(hù)請(qǐng)求一個(gè)頁(yè)面,服務(wù)器會(huì)在后端拼接 HTML 并將整頁(yè)內(nèi)容返回給瀏覽器。

這種模式的特點(diǎn)是:

  • 頁(yè)面渲染在服務(wù)端完成,前端只負(fù)責(zé)展示結(jié)果;
  • 前端和后端代碼耦合嚴(yán)重,一處改動(dòng)往往需要同時(shí)修改后端 JSP 文件與 Controller 邏輯;
  • 開(kāi)發(fā)效率受限,前端無(wú)法獨(dú)立開(kāi)發(fā)或測(cè)試功能,后端壓力較大;
  • 不利于適配現(xiàn)代多端設(shè)備(PC、移動(dòng)、App)。

2. 前后端分離模式:各司其職、職責(zé)清晰

隨著前端技術(shù)的發(fā)展,特別是 Vue、React、Angular 等現(xiàn)代前端框架的流行,前后端分離逐漸成為主流架構(gòu)模式。

前后端分離指的是:

前端和后端分為兩個(gè)獨(dú)立的項(xiàng)目,分別負(fù)責(zé)不同的職責(zé),通過(guò)接口(API)進(jìn)行通信。

前端職責(zé):

  • 使用 Vue / React / 原生 HTML+CSS+JS 等構(gòu)建用戶(hù)界面;
  • 負(fù)責(zé)頁(yè)面渲染、交互邏輯(如按鈕點(diǎn)擊、表單輸入);
  • 通過(guò) Ajax、Axios 等工具調(diào)用后端接口,動(dòng)態(tài)獲取或提交數(shù)據(jù)。

后端職責(zé):

  • 使用 Spring Boot / Node.js / Python 等語(yǔ)言框架處理業(yè)務(wù)邏輯;
  • 與數(shù)據(jù)庫(kù)交互,完成增刪改查;
  • 向前端提供標(biāo)準(zhǔn)的 HTTP 接口(通常返回 JSON 數(shù)據(jù))。

通信方式:

  • 通常采用 HTTP 協(xié)議 + JSON 數(shù)據(jù)格式;
  • 前端通過(guò)調(diào)用 RESTful 接口(如 /api/user/list?)獲取或操作數(shù)據(jù);
  • 也可以使用 WebSocket 實(shí)現(xiàn)實(shí)時(shí)通信。

3. 前后端分離的優(yōu)點(diǎn):

優(yōu)點(diǎn)說(shuō)明
代碼職責(zé)清晰前后端各自專(zhuān)注領(lǐng)域,分工明確,減少相互干擾
便于團(tuán)隊(duì)協(xié)作前端和后端可以并行開(kāi)發(fā),提高效率
更易于測(cè)試與部署接口可獨(dú)立測(cè)試,部署時(shí)前后端可以分別上線
更適配現(xiàn)代應(yīng)用需求支持 SPA(單頁(yè)應(yīng)用)、PWA、移動(dòng)端、小程序等多種終端
更靈活的技術(shù)選型前后端可使用不同技術(shù)棧,如 Vue + Spring Boot 或 React + Node.js
更好的用戶(hù)體驗(yàn)頁(yè)面加載更快、響應(yīng)更靈活,可實(shí)現(xiàn)局部刷新與動(dòng)態(tài)更新

二、前后端工程結(jié)構(gòu)與開(kāi)發(fā)流程

在前后端分離的開(kāi)發(fā)模式中,前后端分別作為兩個(gè)獨(dú)立項(xiàng)目進(jìn)行開(kāi)發(fā)和部署。下面是一個(gè)典型的工程結(jié)構(gòu):

?? vue-front         # 前端項(xiàng)目,使用 Vue3 + Vite 開(kāi)發(fā),獨(dú)立啟動(dòng)
?? springboot-back   # 后端項(xiàng)目,使用 Spring Boot 開(kāi)發(fā),提供 RESTful 接口

2.1 開(kāi)發(fā)流程簡(jiǎn)述:

  • 后端先行:定義接口

    • 例如:GET /api/users/{id}?,返回指定用戶(hù)的信息,數(shù)據(jù)格式為 JSON。
  • 前端對(duì)接:使用 Axios 請(qǐng)求接口

    • 獲取數(shù)據(jù)并渲染到頁(yè)面中。
  • 前后協(xié)作:依賴(lài)接口文檔

    • 接口文檔可以手動(dòng)編寫(xiě),也可以通過(guò) Swagger 等工具自動(dòng)生成,便于雙方協(xié)作。

在編寫(xiě)好了后端部分的程序后,我們通常提供一個(gè)后端接口 Spring Boot API,那么核心操作就是獲取后端接口提供的數(shù)據(jù)然后渲染在前端

上,這一部分我們主要通過(guò)Axios來(lái)完成。

2.2 什么是axios?

Axios 是一個(gè)基于 Promise 的 HTTP 客戶(hù)端,運(yùn)行在瀏覽器和 Node.js 中,用于發(fā)送網(wǎng)絡(luò)請(qǐng)求(比如 GET、POST 等),常用于前端項(xiàng)目中向后端接口獲取或提交數(shù)據(jù)。

簡(jiǎn)單來(lái)說(shuō):

Vue/React 項(xiàng)目中,你想調(diào)用后端的接口?就用 Axios!

Axios 的優(yōu)勢(shì)

為什么不用原生 fetch?,而要用 Axios 呢?看看 Axios 的好處:

優(yōu)勢(shì)說(shuō)明
簡(jiǎn)單語(yǔ)法fetch?寫(xiě)法更直觀,不需要額外.json()?
請(qǐng)求攔截/響應(yīng)攔截可統(tǒng)一加 Token、統(tǒng)一處理錯(cuò)誤
自動(dòng)轉(zhuǎn)換 JSON請(qǐng)求參數(shù)和響應(yīng)結(jié)果都自動(dòng)處理 JSON
支持超時(shí)、取消請(qǐng)求網(wǎng)絡(luò)不穩(wěn)定時(shí)很有用
支持并發(fā)請(qǐng)求可同時(shí)發(fā)送多個(gè)請(qǐng)求,如axios.all?
瀏覽器兼容性好比 fetch 更廣泛支持老版本瀏覽器

Axios 安裝與基本用法

安裝

npm install axios

導(dǎo)入使用

import axios from 'axios'

基礎(chǔ)請(qǐng)求示例

1. GET 請(qǐng)求(獲取數(shù)據(jù))

axios.get('/api/users/1')
  .then(res => {
    console.log(res.data) // 拿到后端返回的數(shù)據(jù)
  })
  .catch(err => {
    console.error('請(qǐng)求失敗', err)
  })

2. POST 請(qǐng)求(提交數(shù)據(jù))

axios.post('/api/users', {
  name: '小紅',
  email: 'hong@example.com'
})

3. PUT 請(qǐng)求(更新數(shù)據(jù))

axios.put('/api/users/1', {
  name: '新名字'
})

4. DELETE 請(qǐng)求(刪除數(shù)據(jù))

axios.delete('/api/users/1')

但是注意,我們不推薦在組件中直接寫(xiě) axios.get(...)?,而是在一個(gè)單獨(dú)的文件中封裝接口邏輯,便于統(tǒng)一維護(hù)、修改和復(fù)用。以一個(gè)用戶(hù)接口為例子。

封裝 Axios 請(qǐng)求(services/user.js)

// ?? src/services/user.js
import axios from 'axios'

// 后端接口基礎(chǔ)地址
const base = 'http://localhost:8080/api/users'

// 獲取指定用戶(hù)
export function getUser(id) {
  return axios.get(`${base}/${id}`)
}

注意:這里的 base? 就是你提到的“后端接口地址”的來(lái)源!我們用字符串拼接的方式,把用戶(hù) ID 加到 URL 上,形成完整請(qǐng)求地址。

在組件中調(diào)用(UserInfo.vue)

<script setup>
import { ref, onMounted } from 'vue'
import { getUser } from '../services/user.js'

// 用 ref 創(chuàng)建響應(yīng)式用戶(hù)對(duì)象
const user = ref({})

// 頁(yè)面加載時(shí)請(qǐng)求后端接口
onMounted(async () => {
  const res = await getUser(1) // 發(fā)起 HTTP 請(qǐng)求,參數(shù) 1 是用戶(hù) ID
  user.value = res.data // 響應(yīng)結(jié)果賦值給 user
})
</script>

<template>
  <div v-if="user.name">
    <h2>用戶(hù)名:{{ user.name }}</h2>
    <p>郵箱:{{ user.email }}</p>
  </div>
</template>

三. 額外的…

全局?jǐn)r截器(加 Token)

在登錄系統(tǒng)中,很多請(qǐng)求需要攜帶用戶(hù)的身份憑證(Token)。你可以配置一個(gè)請(qǐng)求攔截器,自動(dòng)給所有請(qǐng)求加上 Token:

// 在 main.js 或 http.js 中統(tǒng)一配置
axios.interceptors.request.use(config => {
  const token = localStorage.getItem('token') // 從本地獲取 Token
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
})

可選優(yōu)化:使用 Vite 代理簡(jiǎn)化請(qǐng)求地址

你可能注意到請(qǐng)求地址寫(xiě)成 http://localhost:8080/...? 很不優(yōu)雅。如果你在 vite.config.js? 中加了代理:

// vite.config.js
export default {
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:8080',
        changeOrigin: true
      }
    }
  }
}

那么在封裝 Axios 時(shí)可以把 base 改為:

const base = '/api/users'

這樣你寫(xiě) axios.get('/api/users/1')?,其實(shí)內(nèi)部就會(huì)代理成 http://localhost:8080/api/users/1?,前端代碼更簡(jiǎn)潔,跨域問(wèn)題也解決了。

總結(jié)

到此這篇關(guān)于詳解Vue與Spring Boot前后端是怎么對(duì)接起來(lái)的文章就介紹到這了,更多相關(guān)Vue與SpringBoot前后端對(duì)接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring AI內(nèi)置DeepSeek的詳細(xì)步驟

    Spring AI內(nèi)置DeepSeek的詳細(xì)步驟

    Spring AI 最新快照版已經(jīng)內(nèi)置 DeepSeek 了,所以以后項(xiàng)目中對(duì)接 DeepSeek 就方便多了,但因?yàn)榭煺瞻鏁?huì)有很多 Bug,所以今天咱們就來(lái)看穩(wěn)定版的 Spring AI 如何對(duì)接 DeepSeek 滿(mǎn)血版,感興趣的小伙伴跟著小編一起來(lái)看看吧
    2025-02-02
  • 深入解析MybatisPlus多表連接查詢(xún)

    深入解析MybatisPlus多表連接查詢(xún)

    在一些復(fù)雜的業(yè)務(wù)場(chǎng)景中,我們經(jīng)常會(huì)遇到多表連接查詢(xún)的需求,本文主要介紹了深入解析MybatisPlus多表連接查詢(xún),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • 解決MyBatisPlus的updateBatchById()批量修改失效問(wèn)題

    解決MyBatisPlus的updateBatchById()批量修改失效問(wèn)題

    這篇文章主要介紹了解決MyBatisPlus的updateBatchById()批量修改失效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Hibernate映射解析之關(guān)聯(lián)映射詳解

    Hibernate映射解析之關(guān)聯(lián)映射詳解

    所謂關(guān)聯(lián)映射就是將關(guān)聯(lián)關(guān)系映射到數(shù)據(jù)庫(kù)里,在對(duì)象模型中就是一個(gè)或多個(gè)引用。下面這篇文章詳細(xì)的給大家介紹了Hibernate映射解析之關(guān)聯(lián)映射的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-02-02
  • 關(guān)于SpringBoot靜態(tài)資源路徑管理問(wèn)題

    關(guān)于SpringBoot靜態(tài)資源路徑管理問(wèn)題

    這篇文章主要介紹了SpringBoot靜態(tài)資源路徑管理,主要包括默認(rèn)靜態(tài)資源路徑,增加靜態(tài)資源路徑前綴的相關(guān)操作,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • java-spark中各種常用算子的寫(xiě)法示例

    java-spark中各種常用算子的寫(xiě)法示例

    這篇文章主要給大家介紹了關(guān)于java-spark中各種常用算子的寫(xiě)法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • Springboot和bootstrap實(shí)現(xiàn)shiro權(quán)限控制配置過(guò)程

    Springboot和bootstrap實(shí)現(xiàn)shiro權(quán)限控制配置過(guò)程

    這篇文章主要介紹了Springboot和bootstrap實(shí)現(xiàn)shiro權(quán)限控制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • springboot工程jar包部署到云服務(wù)器的方法

    springboot工程jar包部署到云服務(wù)器的方法

    這篇文章主要介紹了springboot工程jar包部署到云服務(wù)器的方法,本文通過(guò)實(shí)例介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-05-05
  • 在Maven下代理服務(wù)器設(shè)定的方式

    在Maven下代理服務(wù)器設(shè)定的方式

    今天小編就為大家分享一篇關(guān)于在Maven下代理服務(wù)器設(shè)定的方式,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • Java簡(jiǎn)單實(shí)現(xiàn)銀行ATM系統(tǒng)

    Java簡(jiǎn)單實(shí)現(xiàn)銀行ATM系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java簡(jiǎn)單實(shí)現(xiàn)銀行ATM系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評(píng)論