Spring Boot+Vue

Spring Boot+Vue 前后端分離是一種非常流行且高效的開發模式,以下是關于其相關方面的詳細介紹:

前端(Vue)部分

? 項目搭建

? 使用 Vue CLI 創建項目,它提供了豐富的插件和配置選項,能夠快速生成項目基礎結構。例如,執行`vue create my-vue-app`命令,根據提示選擇需要的特性,如 Babel、ESLint 等,即可創建一個 Vue 項目。

? 項目目錄結構清晰,`src`目錄下包含`components`(組件)、`views`(頁面視圖)、`router`(路由配置)、`store`(狀態管理)、`assets`(靜態資源)等子目錄,方便進行模塊化開發。

? 頁面開發

? 組件化開發:將頁面拆分成多個獨立的組件,每個組件負責特定的功能和樣式。例如,一個商品列表頁面可以拆分成商品列表組件、商品詳情組件、分頁組件等。通過在父組件中引入并使用子組件,實現頁面的組裝。組件之間可以通過 props 傳遞數據,也可以通過事件進行通信。

? 路由管理:利用 Vue Router 實現頁面的跳轉和管理。在`router/index.js`文件中定義路由規則,將不同的 URL 路徑映射到對應的組件。例如:

? ```javascript

? ? const routes = [

? ? ? {

? ? ? ? path: '/',

? ? ? ? name: 'Home',

? ? ? ? component: Home

? ? ? },

? ? ? {

? ? ? ? path: '/about',

? ? ? ? name: 'About',

? ? ? ? component: () => import('../views/About.vue')

? ? ? }

? ? ]

? ? ```

? 狀態管理:對于復雜的應用,使用 Vuex 進行狀態管理。Vuex 通過定義全局的狀態存儲,使得組件之間能夠方便地共享狀態。例如,一個購物車應用中,購物車商品列表的狀態可以存儲在 Vuex 中,多個組件通過調用 Vuex 的 action 和 mutation 來更新購物車狀態,通過 getters 獲取購物車狀態。

?

? 與后端交互

?

? 使用 axios 庫發送 HTTP 請求與后端進行數據交互。在項目中安裝 axios,然后創建一個請求實例,配置請求的 baseURL、headers 等參數。例如:

?

? ```javascript

? ? import axios from 'axios'

? ? const instance = axios.create({

? ? ? baseURL: 'http://localhost:8080', // 后端接口地址

? ? ? timeout: 10000,

? ? ? headers: {'X-Custom-Header': 'foobar'}

? ? })

? ? ```

? 在組件中調用 axios 實例發送請求獲取數據。例如,獲取用戶列表數據:

? ```javascript

? ? instance.get('/users').then(response => {

? ? ? this.users = response.data

? ? }).catch(error => {

? ? ? console.error(error)

? ? })

? ? ```

?

?

? 對于登錄等操作,發送請求將用戶名和密碼等信息發送給后端,后端返回 token 等認證信息,前端將其存儲在本地存儲(如 localStorage)中,后續請求攜帶 token 進行認證。

?

?

后端(Spring Boot)部分

?

?

? 項目搭建

?

? 使用 Spring Initializr(Spring Boot 項目。選擇項目的基本信息,如 Group(包名)、Artifact(項目名)、Java 版本等,同時添加所需的依賴,如 Spring Web、Spring Data JPA、MyBatis 等,然后生成項目壓縮包并解壓到本地。

? 項目結構清晰,`src/main/java`下是 Java 代碼目錄,包含 controller、service、dao、entity 等包;`src/main/resources`下包含配置文件,如`application.properties`或`application.yml`,用于配置數據庫連接、服務器端口等信息。

?

? 接口開發

?

? Controller 層:定義 RESTful 風格的接口,通過`@RestController`注解標記控制器類,使用`@RequestMapping`、`@GetMapping`、`@PostMapping`等注解定義接口路徑和請求方法。例如:

?

? ```java

? ? @RestController

? ? @RequestMapping("/users")

? ? public class UserController {

?

? ? ? ? @GetMapping

? ? ? ? public List<User> getAllUsers() {

? ? ? ? ? ? // 調用 Service 層方法獲取用戶列表

? ? ? ? ? ? return userService.findAll();

? ? ? ? }

?

? ? ? ? @PostMapping

? ? ? ? public User addUser(@RequestBody User user) {

? ? ? ? ? ? // 調用 Service 層方法添加用戶

? ? ? ? ? ? return userService.save(user);

? ? ? ? }

? ? }

? ? ```

?

?

? Service 層:負責業務邏輯處理。在該層中調用 Dao 層的方法進行數據操作,并對數據進行處理和封裝。例如,對用戶信息進行加密處理、驗證用戶輸入數據的合法性等。

?

? Dao 層:與數據庫進行交互。可以使用 Spring Data JPA 或 MyBatis 等技術。以 Spring Data JPA 為例,定義一個繼承自`JpaRepository`的接口,即可實現基本的增刪改查操作。例如:

?

? ```java

? ? public interface UserRepository extends JpaRepository<User, Long> {

? ? ? ? // 可以在這里定義一些自定義的查詢方法

? ? ? ? List<User> findByUsername(String username);

? ? }

? ? ```

?

?

? 數據交互

?

? 接收前端發送的請求數據,如 JSON 格式的請求體,Spring Boot 會自動將其轉換為對應的 Java 對象。例如,前端發送一個包含用戶信息的 JSON 對象,后端的`@RequestBody User user`參數會自動接收并轉換。

?

? 將處理后的數據以 JSON 格式返回給前端。Spring Boot 默認使用 Jackson 庫進行對象與 JSON 的轉換,通過在實體類中使用注解如`@JsonProperty`、`@JsonIgnore`等,可以控制 JSON 的序列化和反序列化過程。

?

?

前后端交互與部署

?

?

? 開發階段交互

?

? 跨域問題:由于前后端端口不同,默認情況下瀏覽器會阻止跨域請求。可以在 Spring Boot 后端項目中配置跨域資源共享(CORS),允許前端項目訪問后端接口。例如,在全局配置類中添加 CORS 配置:

?

? ```java

? ? @Configuration

? ? public class GlobalCorsConfig {

? ? ? ? @Bean

? ? ? ? public WebMvcConfigurer corsConfigurer() {

? ? ? ? ? ? return new WebMvcConfigurer() {

? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? public void addCorsMappings(CorsRegistry registry) {

? ? ? ? ? ? ? ? ? ? registry.addMapping("/**") // 允許跨域訪問的路徑

? ? ? ? ? ? ? ? ? ? ? ? ? ? .allowedOrigins("http://localhost:8081") // 允許跨域訪問的前端域名和端口

? ? ? ? ? ? ? ? ? ? ? ? ? ? .allowedMethods("GET", "POST", "PUT", "DELETE") // 允許的請求方法

? ? ? ? ? ? ? ? ? ? ? ? ? ? .allowedHeaders("*") // 允許的請求頭

? ? ? ? ? ? ? ? ? ? ? ? ? ? .allowCredentials(true); // 允許攜帶 cookie

? ? ? ? ? ? ? ? }

? ? ? ? ? ? };

? ? ? ? }

? ? }

? ? ```

?

?

? 接口調試:前后端開發人員可以通過 Postman 等工具直接調用后端接口進行測試,也可以在前端項目中使用 axios 發送請求調試接口。同時,后端可以通過日志輸出等方式查看請求參數、響應數據等信息,以便定位問題。

?

? 部署階段

?

? 前端部署:將 Vue 項目構建生成的`dist`目錄(包含靜態資源文件)部署到服務器的靜態資源目錄下,如 Nginx 的`html`目錄。配置 Nginx 服務器,設置靜態資源的訪問路徑和路由轉發規則。例如:

?

? ```nginx

? ? server {

? ? ? ? listen 80;

? ? ? ? server_name example.com;

?

? ? ? ? location / {

? ? ? ? ? ? root /usr/share/nginx/html;

? ? ? ? ? ? try_files $uri $uri/ /index.html;

? ? ? ? }

? ? }

? ? ```

?

?

? 后端部署:將 Spring Boot 項目打包成 jar 包,上傳到服務器,通過命令`java -jar app.jar`啟動應用。可以使用 Docker 容器進行部署,編寫 Dockerfile 構建鏡像,然后運行容器。同時,配置數據庫連接信息、服務器端口等參數,確保后端應用能夠正常運行并提供接口服務。

?

? 前后端整合:確保前端頁面能夠正確訪問后端接口,可以通過配置前端項目的代理規則,在開發階段將請求代理到后端服務器。在生產環境中,通過 Nginx 等反向代理服務器將前端頁面請求和后端接口請求分別轉發到對應的服務器和端口,實現前后端的整合部署。

?

這種前后端分離的開發模式使得前后端可以獨立開發、獨立部署,提高了開發效率和項目的可維護性。同時,前后端通過定義好的接口進行交互,使得項目的擴展性和靈活性更強。

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

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

相關文章

第十四章:計算機新技術

文章目錄&#xff1a; 一&#xff1a;云計算 二&#xff1a;大數據 三&#xff1a;物聯網 四&#xff1a;人工智能 五&#xff1a;移動網絡與應用 六&#xff1a;電子商務 七&#xff1a;虛擬實現 八&#xff1a;區塊鏈 一&#xff1a;云計算 概念云基于?絡&#xff0…

【大數據2025】MapReduce

MapReduce 基礎介紹 起源與發展&#xff1a;是 2004 年 10 月谷歌發表的 MAPREDUCE 論文的開源實現&#xff0c;最初用于大規模網頁數據并行處理&#xff0c;現成為 Hadoop 核心子項目之一&#xff0c;是面向批處理的分布式計算框架。基本原理&#xff1a;分為 map 和 reduce …

主從復制

簡述mysql 主從復制原理及其工作過程&#xff0c;配置一主兩從并驗證。 主從原理&#xff1a;MySQL 主從同步是一種數據庫復制技術&#xff0c;它通過將主服務器上的數據更改復制到一個或多個從服務器&#xff0c;實現數據的自動同步。 主從同步的核心原理是將主服務器上的二…

【博客之星評選】2024年度前端學習總結

故事的開端...始于2024年第一篇前端技術博客 那故事的終末...也該結束于陪伴了我一整年的前端知識了 踏入 2025 年&#xff0c;滿心激動與自豪&#xff0c;我成功闖進了《2024 年度 CSDN 博客之星總評選》的 TOP300。作為一名剛接觸技術寫作不久的萌新&#xff0c;這次能走到這…

Ubuntu 24.04 LTS 服務器折騰集

目錄 Ubuntu 更改軟件源Ubuntu 系統語言英文改中文windows 遠程鏈接 Ubuntu 圖形界面Windows 通過 openssh 連接 UbuntuUbuntu linux 文件權限Ubuntu 空閑硬盤掛載到 文件管理器的 other locationsUbuntu 開啟 SMB 服務&#xff0c;并通過 windows 訪問Ubuntu安裝Tailscale&am…

《TikTok停服:信息安全警鐘長鳴》

一、TikTok 停服事件回顧 2025 年 1 月 18 日晚&#xff0c;TikTok 通知美國用戶&#xff0c;由于美官方禁令于 19 日起生效&#xff0c;TikTok 軟件將暫時對用戶停止服務。這一消息猶如一顆重磅炸彈&#xff0c;瞬間在全球范圍內掀起軒然大波。美國用戶對此猝不及防&#xff0…

1166 Summit (25)

A summit (峰會) is a meeting of heads of state or government. Arranging the rest areas for the summit is not a simple job. The ideal arrangement of one area is to invite those heads so that everyone is a direct friend of everyone. Now given a set of tenta…

圖論DFS:黑紅樹

我的個人主頁 {\large \mathsf{{\color{Red} 我的個人主頁} } } 我的個人主頁 往 {\color{Red} {\Huge 往} } 往 期 {\color{Green} {\Huge 期} } 期 文 {\color{Blue} {\Huge 文} } 文 章 {\color{Orange} {\Huge 章}} 章 DFS 算法&#xff1a;記憶化搜索DFS 算法&#xf…

C++,設計模式,【目錄篇】

文章目錄 1. 簡介2. 設計模式的分類2.1 創建型模式&#xff08;Creational Patterns&#xff09;&#xff1a;2.2 結構型模式&#xff08;Structural Patterns&#xff09;&#xff1a;2.3 行為型模式&#xff08;Behavioral Patterns&#xff09;&#xff1a; 3. 使用設計模式…

掌握提示詞工程:大模型使用入門指南

掌握提示詞工程&#xff1a;大模型使用入門指南 近年來&#xff0c;大語言模型&#xff08;如 GPT、Claude 等&#xff09;的強大能力令人印象深刻&#xff0c;但要想充分發揮這些模型的潛力&#xff0c;僅僅依靠其預訓練能力還不夠。提示詞工程&#xff08;Prompt Engineerin…

如何使用 useMemo 和 memo 優化 React 應用性能?

使用 useMemo 和 memo 優化 React 應用性能 在構建復雜的 React 應用時&#xff0c;性能優化是確保應用流暢運行的關鍵。React 提供了多種工具來幫助開發者優化組件的渲染和計算邏輯&#xff0c;其中 useMemo 和 memo 是兩個非常有用的 Hook。本文將詳細介紹這兩個工具的使用方…

Agent Laboratory: Using LLM Agents as Research Assistants 論文簡介

加速機器學習研究的智能實驗室——Agent Laboratory 1. 引言 隨著人工智能技術的飛速發展&#xff0c;機器學習領域正以前所未有的速度推進科學發現和技術創新。然而&#xff0c;傳統的科學研究模式往往受到時間、資源和專業知識限制&#xff0c;阻礙了研究者們探索新想法的能…

【網絡協議】【http】【https】ECDHE-TLS1.2

【網絡協議】【http】【https】ECDHE-TLS1.2 ECDHE算法 1.客戶端和服務器端事先確定好使用哪種橢圓曲線&#xff0c;和曲線上的基點G&#xff0c;這兩個參數都是公開的&#xff0c; 雙方各自隨機生成一個隨機數作為私鑰d&#xff0c;并與基點 G相乘得到公鑰Q(QdG)&#xff0c…

規避路由沖突

路由沖突是指在網絡中存在兩個或多個路由器在進行路由選擇時出現矛盾&#xff0c;導致網絡數據包無法正確傳輸&#xff0c;影響網絡的正常運行。為了規避路由沖突&#xff0c;可以采取以下措施&#xff1a; 一、合理規劃IP地址 分配唯一IP&#xff1a;確保每個設備在網絡中都有…

項目實戰--網頁五子棋(游戲大廳)(3)

我們的游戲大廳界面主要需要包含兩個功能&#xff0c;一是顯示用戶信息&#xff0c;二是匹配游戲按鈕 1. 頁面實現 hall.html <!DOCTYPE html> <html lang"ch"> <head><meta charset"UTF-8"><meta name"viewport"…

大模型UI:Gradio全解11——Chatbot:融合大模型的聊天機器人(4)

大模型UI&#xff1a;Gradio全解11——Chatbot&#xff1a;融合大模型的聊天機器人&#xff08;4&#xff09; 前言本篇摘要11. Chatbot&#xff1a;融合大模型的多模態聊天機器人11.4 使用Blocks創建自定義聊天機器人11.4.1 簡單聊天機器人演示11.4.2 立即響應和流式傳輸11.4.…

【線性代數】行列式的概念

d e t ( A ) ∑ i 1 , i 2 , ? , i n ( ? 1 ) σ ( i 1 , ? , i n ) a 1 , i 1 a 2 , i 2 , ? , a n , i n det(A) \sum_{i_1,i_2,\cdots,i_n } (-1)^{\sigma(i_1,\cdots,i_n)} a_{1,i_1}a_{2,i_2},\cdots, a_{n,i_n} det(A)i1?,i2?,?,in?∑?(?1)σ(i1?,?,in?)a1…

關于php語言api接口開發的流程

確定接口需求&#xff1a;首先明確接口的功能和需求&#xff0c;包括輸入參數、輸出結果以及接口的業務邏輯。 設計接口路由&#xff1a;根據接口需求&#xff0c;設計具體的接口路由&#xff0c;即URL路徑&#xff0c;用于訪問接口。 搭建PHP環境&#xff1a;確保你的服務器上…

STM32 FreeRTOS內存管理簡介

在使用 FreeRTOS 創建任務、隊列、信號量等對象時&#xff0c;通常都有動態創建和靜態創建的方式。動態方式提供了更靈活的內存管理&#xff0c;而靜態方式則更注重內存的靜態分配和控制。 如果是1的&#xff0c;那么標準 C 庫 malloc() 和 free() 函數有時可用于此目的&#…

【Linux系統編程】—— 深度解析進程等待與終止:系統高效運行的關鍵

文章目錄 進程創建再次認識fork()函數fork()函數返回值 寫時拷貝fork常規?法以及調用失敗的原因 進程終?進程終止對應的三種情況進程常?退出?法_exit函數exit函數return退出 進程等待進程等待的必要性進程等待的?法 進程創建 再次認識fork()函數 fork函數初識&#xff1…