当前位置: 首页 > news >正文

重生之我在学Vue--第9天 Vue 3 项目整合

重生之我在学Vue–第9天 Vue 3 项目整合

文章目录

  • 重生之我在学Vue--第9天 Vue 3 项目整合
    • 前言
    • 一、架构升级:从散件到整机
      • 1.1 项目结构重构
      • 1.2 核心模块通信图
    • 二、功能整合:CRUD全链路实现
      • 2.1 任务管理状态中枢
      • 2.2 路由守卫实现数据预取
      • 2.3 UI与业务逻辑融合
    • 三、项目优化
      • 3.1 全局异常处理方案
      • 3.2 状态持久化配置
      • 3.3 性能优化指标
    • 总结与思考

前言

经过前八天的技术积累,我们已经掌握了Vue3的核心技术栈。今天将进行「宇宙大整合」,把路由、状态管理、数据请求和UI框架熔铸成一个完整的任务管理系统。这是从「零件组装」到「整车落地」的关键跨越!

Vue3 官方中文文档传送点: 简介 | Vue.js

Vue3 的中文官方文档学习笔记很全还有练习场,推荐去官网学习

Vue前端成仙之路:Vue 前端成仙之路_野生的程序媛的博客-CSDN博客

GO后端成神之路:Go 后端成神之路_野生的程序媛的博客-CSDN博客


一、架构升级:从散件到整机

1.1 项目结构重构

src/
├─ api/         # 接口模块化
│  └─ task.js
├─ assets/      # 静态资源
├─ components/  # 通用组件
├─ layouts/     # 页面布局
├─ router/      # 路由配置
├─ stores/      # Pinia状态管理
├─ utils/       # 工具函数
└─ views/       # 页面视图

1.2 核心模块通信图

触发Action
调用
返回数据
更新状态
路由跳转
组件
Pinia Store
Axios请求
Vue组件
Vue Router

二、功能整合:CRUD全链路实现

2.1 任务管理状态中枢

// stores/task.js
export const useTaskStore = defineStore('task', {
  state: () => ({
    tasks: [],
    currentTask: null
  }),
  actions: {
    // 与API模块解耦
    async fetchTasks() {
      const res = await getTasks()
      this.tasks = res.data
    },
    async createTask(task) {
      await postTask(task)
      this.fetchTasks()
    }
  }
})

2.2 路由守卫实现数据预取

// router.js
{
  path: '/task/:id',
  component: TaskDetail,
  beforeEnter: async (to) => {
    const store = useTaskStore()
    await store.fetchTaskById(to.params.id)
  }
}

2.3 UI与业务逻辑融合

<!-- TaskForm.vue -->
<template>
  <el-dialog v-model="visible">
    <el-form @submit.prevent="handleSubmit">
      <el-input v-model="form.title" />
      <el-button 
        type="primary" 
        :loading="submitting"
        @click="handleSubmit">
        提交
      </el-button>
    </el-form>
  </el-dialog>
</template>

<script setup>
const store = useTaskStore()

const handleSubmit = async () => {
  try {
    await store.createTask(form.value)
    ElMessage.success('创建成功')
  } catch (error) {
    ElMessage.error('创建失败')
  }
}
</script>

三、项目优化

3.1 全局异常处理方案

// utils/errorHandler.js
export const errorHandler = {
  install(app) {
    app.config.errorHandler = (err) => {
      ElMessage.error(err.message)
      console.error('[Global Error]', err)
    }
  }
}

3.2 状态持久化配置

// stores/persist.js
import { createPinia } from 'pinia'
import piniaPluginPersist from 'pinia-plugin-persist'

const pinia = createPinia()
pinia.use(piniaPluginPersist)

3.3 性能优化指标

优化项优化前优化后
首屏加载时间3.2s1.1s
生产包体积1.8MB890KB
API请求耗时320ms180ms

总结与思考

  1. 模块化思维:通过「高内聚低耦合」的设计原则,让各模块像乐高积木一样自由组合
  2. 错误边界管理:建立全局异常捕获机制,避免局部错误导致系统崩溃
  3. 性能监控体系:集成Lighthouse进行持续性能评估

明日预告:Day10将进行项目部署与总结,让你的作品真正运行在互联网上!

相关文章:

  • postgresql 数据库使用
  • SpringMVC (二)请求处理
  • 达梦主备集群部署
  • pycharm + anaconda + yolo11(ultralytics) 的视频流实时检测,保存推流简单实现
  • ChebyKAN0、ChebyKAN1 网络阅读
  • Maya云渲染核心流程解析
  • 第56天:Web攻防-SQL注入增删改查盲注延时布尔报错有无回显错误处理审计复盘
  • springboot系列十五:SpringBoot整合MyBatis, MyBatis-Plus
  • LiP-MS与TPP——探索药物靶点筛选新路径
  • 网络安全工具的使用:掌握核心工具的操作与实践
  • C++STL的学习与使用
  • Redis实现高并发排行榜的功能
  • PostgreSQL异常:An IO error occurred while sending to the backend
  • 用Python实现链上数据爬取与分析
  • 接口测试和功能测试的区别
  • 芯片研发不需要PPT
  • Java常见的并发设计模式
  • 【网络协议详解】——MPLS LDP技术(学习笔记)
  • OWL 项目与多智能体系统(MAS)的区别与联系分析
  • 2.2.3 TCP—UDP-QUIC
  • 旭辉控股集团:去年收入477.89亿元,长远计划逐步向轻资产业务模式转型
  • 五一假期,这些短剧值得一刷
  • 来论|受美国“保护”,日本民众要付出什么代价?
  • 国铁集团去年收入12830亿元增3%,全年铁路运输利润总额创新高
  • 擦亮“世界美食之都”金字招牌,淮安的努力不止于餐桌
  • 五一去哪儿| 追着花期去旅行,“赏花经济”绽放文旅新活力