Vue全家桶

今天做项目,客户(ZWN)要求必须使用以下技术

  • vue3+setup语法糖+组合式api
  • vue-router
  • axios
  • pinia
  • ui框架Element plus

那这里,刚好总结一下这些技术(实例解释)

1. Vue 3 + Setup语法糖 + 组合式API

  • 核心特性

    • 组合式API:通过 refreactive 管理响应式数据,computed 和 watch 处理逻辑,替代 Options API 的分散式代码结构。

    • Setup语法糖:使用 <script setup> 简化代码,无需显式 return,直接声明变量/函数即可暴露给模板。

    • 逻辑复用:通过自定义组合函数(Composables)封装可复用的业务逻辑(如用户权限校验)。

  • 优势:代码更简洁、逻辑更聚合,适合复杂组件开发。

// Setup语法糖

<script setup>

// 组合式API

import { onMounted, ref } from 'vue';

const form = ref({})  // ref响应式

onMounted(() => {})   // 生命周期钩子

...

</script>

2. Vue Router

  • 作用:实现单页面应用(SPA)的路由管理。

  • 关键功能

    • 定义路由表(routes),配置路径与组件的映射关系。

    • 通过 <router-view> 渲染组件,<router-link> 实现导航。

    • 导航守卫(beforeEach)实现权限控制或路由拦截。

  • 动态路由:支持参数化路径(如 /user/:id)和懒加载(component: () => import(...))。

// router/index.js
import { createRouter, createWebHistory } from 'vue-router'
const routes = [
  {
    path: '/customers',
    name: 'Customers',
    component: () => import('../views/Customers.vue')
  }
]

3. Axios

  • 角色:基于 Promise 的 HTTP 客户端,用于前后端数据交互。

  • 常用实践

    • 封装全局实例:配置 baseURL、请求拦截器(添加 Token)、响应拦截器(统一错误处理)。

    • 结合 async/await 处理异步请求,替代回调地狱。

    • 与 Pinia 配合,将数据请求逻辑集中在 Store 中。

import axios from 'axios'

const api = axios.create({
  baseURL: 'http://localhost:3000/api',
  timeout: 5000
})

// 客户管理API
export const customerAPI = {
  getAll: (keyword = '') => api.get('/customers', { params: { keyword } }),
  create: (data) => api.post('/customers', data),
  update: (id, data) => api.put(`/customers/${id}`, data),
  delete: (id) => api.delete(`/customers/${id}`)
}
...

4. Pinia

  • 定位:Vue 官方推荐的状态管理库,替代 Vuex。

  • 核心概念

    • Store:通过 defineStore 定义,包含 state(数据)、getters(计算属性)、actions(同步/异步方法)。

    • 模块化:天然支持多 Store 拆分,避免单一 Store 臃肿。

  • 优势:TypeScript 友好、API 简洁,与组合式 API 风格无缝衔接。

const pinia = createPinia()

// Pinia Store - 定义数据管理store
export const useDataStore = defineStore('data', () => {
  // 状态定义
  const customers = ref([])
  const books = ref([])
  const products = ref([])
  const loading = ref(false)

  // Actions
  const fetchCustomers = async (keyword = '') => {
    loading.value = true
    try {
      const response = await customerAPI.getAll(keyword)
      customers.value = response.data
    } catch (error) {
      console.error('获取客户数据失败:', error)
    } finally {
      loading.value = false
    }
  }
...
})

5. Element Plus

  • 定位:基于 Vue 3 的 UI 组件库,提供丰富的企业级组件。

  • 典型组件:表单(el-form)、表格(el-table)、弹窗(el-dialog)、通知(el-message)。

  • 按需引入:通过 unplugin-vue-components 插件自动导入组件,减少打包体积。

  • 定制能力:支持主题定制、国际化(多语言)配置。

    <el-table :data="store.customers" style="width: 100%" v-loading="store.loading">
      <el-table-column prop="id" label="ID" width="100" />
      <el-table-column prop="name" label="姓名" width="150" />
      <el-table-column prop="phone" label="电话" width="150" />
      <el-table-column prop="email" label="邮箱" width="220" />
      <el-table-column prop="address" label="地址" min-width="250" />
      <el-table-column label="操作" width="180" fixed="right">
        <template #default="{ row }">
          <el-button type="primary" size="small" @click="handleEdit(row)">编辑</el-button>
          <el-button type="danger" size="small" @click="handleDelete(row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>

协作优势总结

  1. 高效开发:组合式 API + Element Plus 快速构建界面。

  2. 状态清晰:Pinia 集中管理全局状态(如用户登录信息)。

  3. 路由可控:Vue Router 实现细粒度的页面跳转与权限管理。

  4. 数据流规范:Axios 拦截器统一处理请求/响应,提升可维护性。

  5. 维护友好:模块化设计(Store、Composables)便于长期迭代。

适合中后台管理系统、数据可视化等复杂场景,满足客户对技术前瞻性和工程规范的要求!

6. Vite(补充)

  • 定位:下一代前端构建工具,替代 Webpack,专为现代浏览器和框架设计。

  • 核心特性

    • 极速启动:基于原生 ES 模块(ESM)和按需编译,开发服务器冷启动秒级完成。

    • 高效热更新(HMR):仅编译修改的模块,毫秒级更新,保持应用状态不丢失。

    • 开箱即用:内置对 Vue、TypeScript、CSS 预处理器等的支持,无需复杂配置。

    • 生产优化:基于 Rollup 的构建流程,自动代码分割、异步加载、Tree-shaking。

  • 关键配置

    • 插件生态:通过插件扩展功能(如 @vitejs/plugin-vue 支持 Vue 3 单文件组件)。

    • 环境变量:通过 .env 文件管理多环境变量,区分开发、测试、生产配置。

    • 路径别名:简化模块导入路径(如 @ 指向 /src)。

  • 与 Element Plus 整合

    // vite.config.js
    import AutoImport from 'unplugin-vue-components/vite'
    import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
    
    export default {
      plugins: [
        AutoImport({
          resolvers: [ElementPlusResolver()] // 自动导入 Element Plus 组件
        })
      ]
    }

技术栈整合补充说明

  • 项目初始化

    npm create vite@latest my-project -- --template vue

    一键生成基于 Vue 3 + Vite 的项目结构,天然支持组合式 API 和 TypeScript。

  • 开发体验提升

    • 开发阶段:通过 npm run dev 启动 Vite 开发服务器,享受极速响应。

    • 生产构建:npm run build 生成优化后的静态资源,自动代码分割和压缩。

  • 与现有技术协作

    • Pinia/Vue Router:Vite 天然支持 Vue 生态库,无需额外配置。

    • Axios 拦截器:在 src/utils/request.js 中封装全局 Axios 实例,Vite 通过 ESM 自动处理依赖。


协作优势补充

  • 工程化提效:Vite 彻底解决传统构建工具速度瓶颈,开发阶段构建耗时降低 90% 以上。

  • 标准化配置:Vite 约定大于配置,减少 Webpack 复杂性的同时,允许通过插件灵活扩展。

  • 未来兼容性:基于 ESM 的构建流程,天然支持浏览器新特性(如动态导入、CSS 变量)。


完整架构流程图

Vite 核心
│
├─ 开发服务器(ESM 按需编译)
├─ 构建引擎(Rollup 生产优化)
│
└─ 技术栈整合
   ├─ Vue 3(组合式 API + Setup 语法糖)
   ├─ Pinia(状态管理)
   ├─ Vue Router(路由控制)
   ├─ Axios(HTTP 请求)
   └─ Element Plus(UI 组件)

整合 Vite 后,技术栈覆盖开发工具、UI 框架、状态管理、路由、请求库,形成高效、现代的全链路解决方案,尤其适合对开发效率和性能有高要求的项目!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值