1. 原有技术架构的局限性

  • 技术栈落后: 采用前后端混合的JSP开发模式,前后端代码强耦合,导致:
    • 前端逻辑与Java后端代码混杂,维护困难
    • 页面渲染依赖服务端,无法实现动态交互
    • 开发效率低下(需重启服务查看前端改动)
  • 代码冗余
    • 重复的DOM操作代码,如车辆列表渲染
    • 全局样式冲突,无CSS作用域隔离
    • 手动管理数据状态,如筛选条件同步
  • 性能
    • 全页面刷新导致资源重复加载
    • 缺乏组件缓存机制,相同逻辑重复执行

2. 用户侧问题

  • 交互体验差(点击筛选需整页刷新)
  • 移动端适配困难(响应式代码手工实现)
  • 新功能开发周期长(牵一发而动全身)

为什么选择Vue3?

原有问题 Vue3解决方案
JSP前后端耦合 完全前后端分离
重复DOM操作 响应式数据驱动(v-for自动渲染列表)
全局状态混乱 Pinia集中式状态管理
无组件化 单文件组件(.vue) + 组合式函数复用+大量精美开源组件库
  • 组合式API(Composition API) 将分散的车辆筛选逻辑、分页逻辑抽取为可复用函数。
  • 模板编译优化 对比原生JS拼接HTML字符串,Vue3的模板编译器:
1
2
3
4
5
6
7
8
   <!-- 原生方式 -->  
 document.getElementById('list').innerHTML = cars.map(car => `
   <div class="car">${car.name}</div>
 `).join('');
 ​
 <!-- Vue3方式 -->
 <CarItem v-for="car in carList" :key="car.id" :data="car" />

重构后的核心收益

1. 开发效率提升

  • 调试时间降低 Vue DevTools可快速定位组件状态问题,相比原生调试节省大量的时间。
  • 代码量大量减少 vue3是现在流行的前端框架,有很多先进的思想,可以大量减少重复代码的编写,同时组件化使得管理非常方便。

2. 可维护性增强

  • 组件化目录结构
     src/
     ├─ components/     // 复用组件
     │ ├─ CarCard.vue
     │ ├─ FilterBox.vue
     ├─ composables/     // 逻辑复用
     │ ├─ useCarData.js
     │ ├─ useSearch.js
     ├─ views/           // 页面级组件
     │ ├─ HomeView.vue

体验优化

操作 原生响应时间 Vue3响应时间
车辆筛选 有明显加载时间 几乎感觉不到
详情页切换 全页刷新 局部加载

原生实现

1
2
3
4
5
 // 手动监听表单事件 + 拼接URL跳转  
 document.getElementById('filter-form').addEventListener('submit', () => {
   const brand = document.getElementById('brand').value;
   window.location.href = `/cars?brand=${brand}`; // 整页刷新
 });

Vue3实现

1
2
3
4
5
6
7
8
9
10
11
12
 <script setup>  
 const filters = reactive({ brand: null, price: null });
 const { data: filteredCars } = useFetch('/api/cars', {
   params: filters // 响应式参数自动同步
 });
 </script>
 ​
 <template>
   <input v-model="filters.brand" placeholder="品牌">
   <!-- 列表自动更新 -->
   <CarList :cars="filteredCars" />
 </template>