当前位置:首页 > VUE

vue业务实现

2026-03-28 12:39:42VUE

Vue 业务实现的关键方法

组件化开发

Vue 的核心思想是组件化,将 UI 拆分为独立可复用的组件。每个组件包含模板、逻辑和样式,通过 props 传递数据,通过事件实现父子通信。业务逻辑应尽量封装在组件内部,避免全局状态污染。

<template>
  <div class="user-card">
    <h3>{{ user.name }}</h3>
    <button @click="handleFollow">关注</button>
  </div>
</template>

<script>
export default {
  props: ['user'],
  methods: {
    handleFollow() {
      this.$emit('follow', this.user.id)
    }
  }
}
</script>

状态管理

复杂业务需使用 Vuex 或 Pinia 管理全局状态。Vuex 的 store 包含 state、mutations、actions 和 getters,适合中大型项目。Pinia 更轻量且支持 TypeScript。

// Pinia 示例
import { defineStore } from 'pinia'

export const useCartStore = defineStore('cart', {
  state: () => ({ items: [] }),
  actions: {
    addItem(product) {
      this.items.push(product)
    }
  }
})

API 交互

使用 axios 或 fetch 与后端 API 交互。建议封装请求模块,统一处理错误和 loading 状态。结合 async/await 使异步代码更清晰。

import axios from 'axios'

export const getUser = async (userId) => {
  try {
    const res = await axios.get(`/api/users/${userId}`)
    return res.data
  } catch (error) {
    console.error('获取用户失败', error)
    throw error
  }
}

路由管理

Vue Router 实现页面导航和权限控制。动态路由和导航守卫可处理权限验证,懒加载优化性能。

const routes = [
  {
    path: '/admin',
    component: () => import('./Admin.vue'),
    meta: { requiresAuth: true }
  }
]

router.beforeEach((to, from, next) => {
  if (to.meta.requiresAuth && !isLoggedIn()) {
    next('/login')
  } else {
    next()
  }
})

表单处理

复杂表单建议使用 v-model 双向绑定,结合计算属性和 watcher 处理联动逻辑。验证可使用 VeeValidate 或自定义规则。

<template>
  <form @submit.prevent="submit">
    <input v-model="form.email" type="email">
    <span v-if="errors.email">{{ errors.email }}</span>
  </form>
</template>

<script>
export default {
  data() {
    return {
      form: { email: '' },
      errors: {}
    }
  },
  methods: {
    validate() {
      this.errors = {}
      if (!this.form.email) this.errors.email = '必填字段'
    },
    submit() {
      this.validate()
      if (Object.keys(this.errors).length) return
      // 提交逻辑
    }
  }
}
</script>

性能优化

v-if 和 v-show 合理选择,避免不必要的重新渲染。列表使用 :key 提升 diff 效率。大型数据考虑虚拟滚动。

<template>
  <div v-for="item in bigList" :key="item.id">
    {{ item.name }}
  </div>
</template>

测试策略

单元测试验证组件逻辑,使用 Jest 或 Vitest。E2E 测试检查完整流程,推荐 Cypress。测试覆盖率应关注核心业务逻辑。

vue业务实现

// 示例单元测试
import { mount } from '@vue/test-utils'
import Counter from './Counter.vue'

test('点击按钮增加计数', async () => {
  const wrapper = mount(Counter)
  await wrapper.find('button').trigger('click')
  expect(wrapper.text()).toContain('1')
})

标签: 业务vue
分享给朋友:

相关文章

vue列表实现

vue列表实现

Vue 列表实现方法 使用 v-for 指令 v-for 是 Vue 中用于渲染列表的核心指令,基于数据源动态生成 DOM 元素。语法格式为 item in items 或 (item, index)…

vue 实现弹幕

vue 实现弹幕

vue 实现弹幕的方法 使用 CSS 动画和动态渲染 在 Vue 中实现弹幕效果,可以通过动态渲染弹幕元素并结合 CSS 动画实现。以下是具体步骤: 数据准备 创建一个数组存储弹幕数据,每条弹幕包…

vue树形实现

vue树形实现

Vue 树形组件实现方法 使用递归组件实现树形结构 递归组件是 Vue 中实现树形结构的常见方法。通过组件调用自身的方式,可以轻松构建多层嵌套的树形结构。 <template> &l…

vue实现管道

vue实现管道

Vue 中实现管道(Pipe)功能 在 Vue 中可以通过过滤器(Filters)或计算属性(Computed Properties)实现类似管道的功能,将数据经过多个处理步骤后输出。 使用过滤器(…

vue computed实现

vue computed实现

计算属性的基本用法 在Vue中,计算属性通过computed选项定义,用于声明依赖于其他属性的动态值。计算属性基于它们的依赖进行缓存,只有依赖发生变化时才会重新计算。 new Vue({ dat…

vue实现selectable

vue实现selectable

Vue 实现可选择的 Select 组件 在 Vue 中实现一个可选择的 Select 组件,可以通过以下几种方式: 使用原生 HTML select 元素 <template>…