Vue + Spring Boot 整合全解析

一、引言

在當今的Web開發領域,前后端分離架構已成為主流。Vue.js作為一款流行的前端框架,以其簡潔易用和高效的特點深受開發者喜愛;Spring Boot則是Java后端開發中快速構建應用的利器。將Vue和Spring Boot整合,能夠充分發揮兩者的優勢,打造出高性能、易維護的Web應用。本文將詳細介紹如何進行Vue + Spring Boot的整合。

二、環境準備

  1. 前端環境:確保已安裝Node.js,它是運行Vue項目所必需的。可從Node.js官網下載并安裝。安裝完成后,通過node -vnpm -v命令檢查版本,確保安裝成功。
  2. 后端環境:安裝JDK(建議JDK 8及以上)和Maven。可從Oracle官網下載JDK,從Maven官網下載Maven。配置好相應的環境變量后,通過java -versionmvn -v命令驗證安裝。

三、創建Spring Boot后端項目

  1. 使用Spring Initializr快速創建項目
    訪問Spring Initializr,在網頁上進行項目初始化配置。選擇Maven項目,語言為Java,Spring Boot版本可根據需求選擇(這里以2.6.4為例)。在“Dependencies”中添加“Spring Web”依賴,它會幫助我們快速搭建起Web服務。點擊“Generate”下載項目壓縮包,解壓后即可在IDE(如IntelliJ IDEA或Eclipse)中打開。
  2. 創建一個簡單的Controller
    src/main/java/com/yourpackage/controller目錄下創建一個新的類,例如HelloController。代碼如下:
package com.example.demo.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("/api/hello")public String hello() {return "Hello from Spring Boot!";}
}

上述代碼定義了一個簡單的RESTful接口,當訪問/api/hello時,會返回“Hello from Spring Boot!”。

四、創建Vue前端項目

  1. 使用Vue CLI創建項目
    打開命令行工具,運行以下命令創建Vue項目:
vue create vue - spring - boot - integration

按照提示選擇預設配置,這里我們選擇默認配置即可。創建完成后,進入項目目錄:

cd vue - spring - boot - integration
  1. 編寫前端頁面調用后端接口
    src/views目錄下創建一個新的組件,例如Hello.vue。代碼如下:
<template><div><h1>{{ message }}</h1></div>
</template><script>
export default {data() {return {message: ''}},mounted() {this.fetchData();},methods: {async fetchData() {try {const response = await fetch('http://localhost:8080/api/hello');const data = await response.text();this.message = data;} catch (error) {console.error('Error fetching data:', error);}}}
}
</script>

上述代碼在頁面加載時(mounted鉤子函數),通過fetch方法調用后端的/api/hello接口,并將返回的數據顯示在頁面上。

  1. 配置路由
    src/router/index.js中配置路由,引入剛剛創建的Hello.vue組件。代碼如下:
import { createRouter, createWebHistory } from 'vue-router'
import Hello from '@/views/Hello.vue'const routes = [{path: '/',name: 'Hello',component: Hello}
]const router = createRouter({history: createWebHistory(process.env.BASE_URL),routes
})export default router

五、解決跨域問題

由于前端運行在一個端口(如http://localhost:8081),后端運行在另一個端口(如http://localhost:8080),會出現跨域問題。在Spring Boot后端項目中解決跨域問題很簡單,只需創建一個配置類。在src/main/java/com/yourpackage/config目錄下創建CorsConfig.java,代碼如下:

package com.example.demo.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class CorsConfig {@Beanpublic WebMvcConfigurer corsConfigurer() {return new WebMvcConfigurer() {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("http://localhost:8081").allowedMethods("GET", "POST", "PUT", "DELETE").allowedHeaders("*");}};}
}

上述代碼配置了允許來自http://localhost:8081的跨域請求,支持常見的HTTP方法,并允許所有的請求頭。

六、啟動項目

  1. 啟動Spring Boot后端項目:在IDE中直接運行Spring Boot項目的主類(通常帶有@SpringBootApplication注解),或者在項目根目錄下通過命令行運行mvn spring-boot:run,啟動后控制臺會顯示項目啟動成功的信息,后端服務監聽在默認的8080端口。
  2. 啟動Vue前端項目:在Vue項目根目錄下運行npm run serve,啟動后控制臺會輸出項目的訪問地址,一般為http://localhost:8081。在瀏覽器中訪問該地址,即可看到前端頁面顯示“Hello from Spring Boot!”,這表明Vue和Spring Boot成功整合。

七、總結

通過以上步驟,我們成功地將Vue和Spring Boot進行了整合。這種前后端分離的架構模式不僅提高了開發效率,也使項目的維護和擴展更加容易。在實際項目中,可以根據需求進一步完善前后端的功能,如添加用戶認證、數據庫操作等。希望本文能幫助你快速上手Vue + Spring Boot的整合開發。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79673.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79673.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79673.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PDF.js 生態中如何處理“添加注釋\添加批注”以及 annotations.contents 屬性

我們來詳細解釋一下在 PDF.js 生態中如何處理“添加注釋”以及 annotations.contents 屬性。 核心要點&#xff1a;PDF.js 本身主要是閱讀器&#xff0c;不是編輯器 首先&#xff0c;最重要的一點是&#xff1a;PDF.js 的核心庫 (pdfjs-dist) 主要設計用于解析和渲染&#xf…

當HTTP遇到SQL注入:Java開發者的攻防實戰手冊

一、從HTTP請求到數據庫查詢:漏洞如何產生? 危險的參數拼接:Servlet中的經典錯誤 漏洞代碼重現: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String category = request.getParameter("…

【grafana原生告警中心配置飛書機器人告警】

在grafana中的connect point中使用webhook的方式推送到飛書&#xff0c;始終無法觸發告警&#xff0c;原因是grafana推送的格式飛書不識別&#xff0c;現有兩種方式 1.使用中轉服務 使用flask搭建一個服務&#xff0c;grafana告警先通過webhook發送到web服務中&#xff0c;格…

kafka集群認證

1、安裝Kerberos(10.10.10.168) yum install krb5-server krb5-workstation krb5-libs -y ? 查看版本 klist -V ? Kerberos 5 version 1.20.1 ? 編輯/etc/hosts 10.10.10.168 ms1 10.10.10.150 ms2 10.10.10.110 ms3 vim /etc/krb5.conf # Configuration snippets ma…

前端工程化之自動化測試

自動化測試 自動化測試為什么需要測試&#xff1f;什么時候需要考慮測試測試類型前端測試框架單元測試Jest 重點掌握項目示例package.jsonsrc/utils/math.tssrc/utils/math.test.ts進行測試jest.config.js覆蓋率直觀看覆蓋率coverage/lcov-report/index.html src/main.test.tst…

分布式系統核心原理

CAP定理與權衡實踐 CAP定理 一致性&#xff08;Consistency&#xff09; 強一致性&#xff1a;所有讀寫操作均基于最新數據&#xff08;如銀行轉賬&#xff09;。 最終一致性&#xff1a;數據副本經過一段時間后達到一致&#xff08;如社交媒體的點贊數&#xff09;。 技術實現…

Step文件無法編輯怎么辦?

Step文件無法編輯怎么辦&#xff1f; 這里介紹兩種方法&#xff0c; 1、 直接導入 準備step文件&#xff0c;solidworks導入后是這樣&#xff0c;不能在上面直接編輯 圖 1 點擊右鍵&#xff0c;選擇解除特征&#xff08;不同版本的可能不太一樣&#xff0c;這里是solidworks2…

TIM_ITConfig() 和 TIM_Cmd()

在STM32的定時器中斷配置中&#xff0c;TIM_ITConfig() 和 TIM_Cmd() 是兩個關鍵函數&#xff0c;它們分別控制中斷使能和定時器計數器的啟停&#xff0c;作用層級不同。以下是詳細解釋&#xff1a; 1. TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE) 作用 啟用定時器的特定中斷…

TensorFlow 實現 Mixture Density Network (MDN) 的完整說明

本文檔詳細解釋了一段使用 TensorFlow 構建和訓練混合密度網絡&#xff08;Mixture Density Network, MDN&#xff09;的代碼&#xff0c;涵蓋數據生成、模型構建、自定義損失函數與預測可視化等各個環節。 1. 導入庫與設置超參數 import numpy as np import tensorflow as t…

數據結構實驗7.2:二叉樹的基本運算

文章目錄 一&#xff0c;實驗目的二&#xff0c;問題描述三&#xff0c;基本要求四&#xff0c;實驗操作五&#xff0c;示例代碼六&#xff0c;運行效果 一&#xff0c;實驗目的 深入理解樹與二叉樹的基本概念&#xff0c;包括節點、度、層次、深度等&#xff0c;清晰區分二叉…

直線軸承常規分類知多少?

直線軸承的分類方式多樣&#xff0c;以下是從材質、結構形狀和常規系列三個維度進行的具體分類&#xff1a; 按主要材質分類 外殼材質&#xff1a;常見的有不銹鋼&#xff0c;具有良好的耐腐蝕性&#xff0c;適用于一些對環境要求較高、易受腐蝕的工作場景&#xff1b;軸承…

websocket和SSE學習記錄

websocket學習記錄 websocket使用場景 即時聊天在線文檔協同編輯實施地圖位置 從開發角度來學習websocket開發 即使通信項目 通過node建立簡單的后端接口,利用fs&#xff0c; path&#xff0c; express app.get(*, (req, res) > {const assetsType req.url.split(/)[…

CUDA編程中影響性能的小細節總結

一、內存訪問優化 合并內存訪問&#xff1a;確保相鄰線程訪問連續內存地址&#xff08;全局內存對齊訪問&#xff09;。優先使用共享內存&#xff08;Shared Memory&#xff09;減少全局內存訪問。避免共享內存的Bank Conflict&#xff08;例如&#xff0c;使用padding或調整訪…

【雙指針】對撞指針 快慢指針 移動零

文章目錄 雙指針介紹對撞指針快慢指針283. 移動零解題思路算法思路算法流程雙指針介紹 ? 算法中的雙指針,并不一定是指我們平常在 c/c++ 使用的指針類型,更多時候其實是數組的下標等,因為它們也是有標識某個元素的功能,通常我們也就順其自然地稱其為 “指針” ! ? 常見…

數據結構0基礎學習堆

文章目錄 簡介公式建立堆函數解釋 堆排序O(n logn)topk問題 簡介 堆是一種重要的數據結構&#xff0c;是一種完全二叉樹&#xff0c;&#xff08;二叉樹的內容后面會出&#xff09;&#xff0c; 堆分為大小堆&#xff0c;大堆&#xff0c;左右結點都小于根節點&#xff0c;&am…

4.17--4.19刷題記錄(貪心)

第一部分&#xff1a;準備工作 代碼隨想錄中解釋為&#xff1a;貪心的本質是選擇每一階段的局部最優&#xff0c;從而達到全局最優。 而我的理解為&#xff1a;貪心實質上是具有最優子結構的一種算法。所有的解都能由當前最優的解組成。 第二部分&#xff1a;開始刷題 &…

學習筆記十七——Rust 支持面向對象編程嗎?

&#x1f9e0; Rust 支持面向對象編程嗎&#xff1f; Rust 是一門多范式語言&#xff0c;主要以 安全、并發、函數式、系統級編程為核心目標&#xff0c;但它同時也支持面向對象的一些關鍵特性&#xff0c;比如&#xff1a; 特性傳統 OOP&#xff08;如 Java/C&#xff09;Ru…

【Linux】43.網絡基礎(2.5)

文章目錄 2.4 TCP/UDP對比2.4.1 用UDP實現可靠傳輸(經典面試題) 2.5 TCP 相關實驗2.5.1 理解 listen 的第二個參數 2.4 TCP/UDP對比 我們說了TCP是可靠連接, 那么是不是TCP一定就優于UDP呢? TCP和UDP之間的優點和缺點, 不能簡單, 絕對的進行比較TCP用于可靠傳輸的情況, 應用于…

three.js與webgl在buffer上的對應關系

一、three.js的類名 最近開始接觸three.js 看到three.js中的一些類名和webgl的很相似 不自覺的就想對比一下 二、three.js中繪制4個點 // 創建點的幾何體 const vertices new Float32Array([0.0, 0.0, 0.0, // 點11.0, 0.0, 0.0, // 點20.0, 1.0, 0.0, // 點30.…

DataWhale AI春訓營 問題匯總

1.沒用下載訓練集導致出錯&#xff0c;爆錯如下。 這個時候需要去比賽官網下載對應的初賽訓練集 unzip -d /mnt/workspace/sais_third_new_energy_baseline/data /mnt/workspace/sais_third_new_energy_baseline/初賽訓練集.zip 在命令行執行這個命令解壓 2.沒定義測試集 te…