当前位置:首页 > VUE

vue面试实现功能

2026-03-10 03:18:07VUE

Vue 面试常见功能实现

双向数据绑定

使用 v-model 实现表单输入与数据的双向绑定。适用于输入框、单选、多选等表单元素。

<template>
  <input v-model="message" placeholder="Edit me">
  <p>Message is: {{ message }}</p>
</template>

<script>
export default {
  data() {
    return {
      message: ''
    }
  }
}
</script>

条件渲染

通过 v-ifv-elsev-show 控制元素的显示与隐藏。v-if 是惰性的,v-show 始终渲染。

<template>
  <div v-if="show">Visible</div>
  <div v-else>Hidden</div>
  <button @click="toggle">Toggle</button>
</template>

<script>
export default {
  data() {
    return {
      show: true
    }
  },
  methods: {
    toggle() {
      this.show = !this.show
    }
  }
}
</script>

列表渲染

使用 v-for 渲染数组或对象,需配合 :key 提升性能。

<template>
  <ul>
    <li v-for="(item, index) in items" :key="index">
      {{ item.name }}
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { name: 'Item 1' },
        { name: 'Item 2' }
      ]
    }
  }
}
</script>

事件处理

通过 v-on(简写 @)监听 DOM 事件,触发方法或直接执行表达式。

<template>
  <button @click="handleClick">Click me</button>
</template>

<script>
export default {
  methods: {
    handleClick() {
      alert('Button clicked!')
    }
  }
}
</script>

计算属性

使用 computed 处理复杂逻辑,缓存结果避免重复计算。

<template>
  <p>Reversed message: {{ reversedMessage }}</p>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello'
    }
  },
  computed: {
    reversedMessage() {
      return this.message.split('').reverse().join('')
    }
  }
}
</script>

侦听器

通过 watch 监听数据变化,执行异步或开销较大的操作。

vue面试实现功能

<script>
export default {
  data() {
    return {
      question: '',
      answer: ''
    }
  },
  watch: {
    question(newVal) {
      this.answer = 'Thinking...'
      setTimeout(() => {
        this.answer = 'Answer to ' + newVal
      }, 1000)
    }
  }
}
</script>

组件通信

父组件通过 props 传递数据,子组件通过 $emit 触发事件。

<!-- Parent.vue -->
<template>
  <Child :msg="parentMsg" @notify="handleNotify"/>
</template>

<script>
export default {
  data() {
    return {
      parentMsg: 'From parent'
    }
  },
  methods: {
    handleNotify(msg) {
      console.log(msg)
    }
  }
}
</script>

<!-- Child.vue -->
<template>
  <button @click="$emit('notify', 'Child clicked')">
    {{ msg }}
  </button>
</template>

<script>
export default {
  props: ['msg']
}
</script>

生命周期钩子

在特定阶段执行代码,如 created 发起请求,mounted 操作 DOM。

<script>
export default {
  data() {
    return {
      data: null
    }
  },
  created() {
    fetchData().then(res => {
      this.data = res
    })
  },
  mounted() {
    console.log('Component mounted')
  }
}
</script>

插槽

使用 <slot> 实现内容分发,支持默认内容和命名插槽。

vue面试实现功能

<!-- Parent.vue -->
<template>
  <Child>
    <template v-slot:header>
      <h1>Header</h1>
    </template>
    <p>Default content</p>
  </Child>
</template>

<!-- Child.vue -->
<template>
  <div>
    <slot name="header"></slot>
    <slot></slot>
  </div>
</template>

路由导航

通过 Vue Router 实现页面跳转,使用 router-link 和编程式导航。

<template>
  <router-link to="/about">About</router-link>
  <button @click="goHome">Home</button>
</template>

<script>
export default {
  methods: {
    goHome() {
      this.$router.push('/')
    }
  }
}
</script>

状态管理

使用 Vuex 集中管理状态,通过 mapStatemapActions 简化调用。

<script>
import { mapState, mapActions } from 'vuex'

export default {
  computed: {
    ...mapState(['count'])
  },
  methods: {
    ...mapActions(['increment'])
  }
}
</script>

自定义指令

注册全局或局部指令,操作 DOM 元素。

<template>
  <input v-focus>
</template>

<script>
export default {
  directives: {
    focus: {
      inserted(el) {
        el.focus()
      }
    }
  }
}
</script>

Mixins

复用组件选项,合并到组件逻辑中。

<script>
const myMixin = {
  created() {
    console.log('Mixin hook')
  }
}

export default {
  mixins: [myMixin]
}
</script>

标签: 功能vue
分享给朋友:

相关文章

vue实现路由导航

vue实现路由导航

路由导航的实现方式 在Vue中,路由导航主要通过Vue Router实现。Vue Router是Vue.js官方的路由管理器,用于构建单页面应用(SPA)。 基本路由配置 安装Vue Router后…

vue手写签名如何实现

vue手写签名如何实现

实现手写签名的基本思路 在Vue中实现手写签名功能,通常需要借助HTML5的Canvas API来捕获用户的绘制操作。核心流程包括初始化画布、监听触摸/鼠标事件、记录轨迹以及生成签名图片。…

vue实现打印二维码

vue实现打印二维码

安装二维码生成库 使用 qrcode 或 vue-qrcode 库生成二维码。通过 npm 安装: npm install qrcode vue-qrcode 生成二维码 在 Vue 组件中引入…

vue分类实现

vue分类实现

Vue分类实现方法 在Vue中实现分类功能通常涉及数据分组、动态渲染和交互逻辑。以下是几种常见的实现方式: 基于计算属性的分类 通过计算属性对原始数据进行分组处理,适合静态或少量数据分类: com…

vue 实现打印

vue 实现打印

Vue 实现打印功能的方法 在Vue项目中实现打印功能,可以通过以下几种方式实现: 使用window.print()方法 通过调用浏览器的原生打印API实现基础打印功能,适用于简单内容打印。 //…

vue 实现登录

vue 实现登录

Vue 实现登录功能 创建登录表单组件 在 Vue 项目中创建一个登录表单组件(如 Login.vue),包含用户名和密码输入框以及提交按钮。使用 v-model 实现双向数据绑定。 <tem…