当前位置:首页 > 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 监听数据变化,执行异步或开销较大的操作。

<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> 实现内容分发,支持默认内容和命名插槽。

<!-- 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

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

vue面试实现功能

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

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

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

相关文章

vue 移动端实现签名

vue 移动端实现签名

Vue 移动端签名实现方法 在移动端实现签名功能,可以通过HTML5的Canvas结合触摸事件完成。以下是具体实现步骤: 使用Canvas绘制签名 安装vue-signature-pad插件或直接使…

vue computed 实现

vue computed 实现

computed 的基本用法 在 Vue 中,computed 用于声明计算属性,这些属性基于响应式依赖进行缓存。只有当依赖发生变化时,计算属性才会重新计算。 new Vue({ data: {…

vue 实现回复

vue 实现回复

Vue 实现回复功能 在 Vue 中实现回复功能通常涉及表单提交、数据绑定和列表渲染。以下是实现步骤和代码示例: 数据绑定与表单 <template> <div>…

vue elementui实现菜单

vue elementui实现菜单

Vue ElementUI 实现菜单 安装 ElementUI 确保项目已安装 Vue 和 ElementUI。若未安装,可以通过以下命令安装: npm install element-ui 在 m…

vue实现左右滑动

vue实现左右滑动

Vue 实现左右滑动效果 使用 touch 事件实现基础滑动 监听 touchstart、touchmove 和 touchend 事件实现基础滑动逻辑: <template> &l…

vue制作css

vue制作css

在Vue中制作CSS的方法 Vue提供了多种灵活的方式来编写和管理CSS,可以根据项目需求选择适合的方法。 使用内联样式 内联样式可以直接在Vue组件的模板中编写,适用于简单的样式需求。 <…