博客 / 詳情

返回

用 Spring Boot + Vue3 搭建個人項目的幾點實踐經驗

最近做了一個小項目,主要是想練手前後端分離的開發流程,同時把一些常見的技術棧組合落到實處。技術上用的是 Spring Boot 做後端,Vue3 做前端,數據庫選了 MySQL,加了 Redis 做緩存。

不是大項目,也沒有複雜的業務邏輯,正因如此,反倒讓我更專注於開發流程、架構清晰度和一些基礎設施的細節。這裏記錄一些踩過的坑和能複用的經驗。

技術棧簡述

  • 後端:Spring Boot(REST 接口、MyBatis、Spring Security)
  • 前端:Vue 3(Composition API、Pinia、Axios)
  • 數據庫:MySQL(基本的增刪改查)
  • 緩存:Redis(主要做列表緩存 + 登錄狀態)

這些組件組合起來是為了追求一個目標:部署成本低、學習曲線平滑、自己能完全掌控每一環。

項目結構設計

後端模塊採用了分層結構,按照 controller → service → mapper 的標準寫法。數據庫表設計儘量簡單,儘量避免多表 join,寧可做點冗餘。

前端部分用了 Vite 搭建開發環境,整體項目結構保持簡潔,每個頁面一個 view,再細分出通用的組件。

這一點經驗是:目錄別搞太複雜,項目規模小時,結構扁平比花哨架構更高效。

一些問題和處理方式

跨域請求

前後端本地開發階段跨域是常態,用 Spring Boot 配置 CORS 即可,別一開始就上覆雜的網關或者代理配置。

registry.addMapping("/**")
    .allowedOrigins("http://localhost:5173")
    .allowedMethods("*");

接口權限控制

Spring Security 用起來不輕鬆,但如果只是做個基本的登錄校驗,可以把邏輯包在 UsernamePasswordAuthenticationFilter 之前處理,再用 JWT 做狀態傳遞。避免 session 管理,部署簡單。

緩存更新策略

列表類接口緩存最明顯提升性能,但要注意緩存失效策略。一開始我用的固定 TTL,後來改成了寫操作後主動清除緩存,這樣列表總是最新的,命中率也更高。

redisTemplate.delete("user:tasklist:" + userId);

前端狀態管理

Pinia 比 Vuex 用起來直觀很多,狀態邏輯更容易抽離出來。建議從一開始就用統一 store 管理登錄狀態、用户信息等,不然到中期會出現“組件傳值混亂”的問題。

開發節奏與迭代方式

我採取的是 “功能優先,樣式其次” 的順序,先用最簡單的方式把流程跑通,再逐步美化和增強交互體驗。中途幾次想重構,最後都壓住了衝動——不是不能重寫,而是沒必要。

總結幾點建議:

  1. 架構不要為“規模化”設計,要為“當下清晰”設計。
  2. 能跑起來的功能,比“架構優雅”的草稿更有價值。
  3. 小項目裏,流程打通優先於組件通用化。
  4. 本地開發時別太依賴瀏覽器插件或高級中間件,儘量貼近生產環境。

這類項目雖小,但能練的內容不少。寫下來也不是為了展示什麼成果,更像是給自己下一次做類似項目留點可複用的參考。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.