当前位置:首页 > VUE

vue组件的实现

2026-01-06 23:28:11VUE

Vue 组件的实现方式

Vue 组件可以通过多种方式实现,以下是常见的几种方法:

单文件组件 (SFC) 使用 .vue 文件,包含模板、脚本和样式三部分:

<template>
  <div>{{ message }}</div>
</template>

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

<style scoped>
div {
  color: red;
}
</style>

选项式 API 通过 JavaScript 对象定义组件:

const MyComponent = {
  template: '<div>{{ message }}</div>',
  data() {
    return {
      message: 'Hello Vue!'
    }
  }
}

组合式 API 使用 setup 函数组织逻辑:

<script>
import { ref } from 'vue'

export default {
  setup() {
    const message = ref('Hello Vue!')
    return { message }
  }
}
</script>

组件注册

全局注册 在应用实例上全局注册组件:

import { createApp } from 'vue'
import MyComponent from './MyComponent.vue'

const app = createApp({})
app.component('my-component', MyComponent)

局部注册 在组件内部局部注册:

vue组件的实现

import ChildComponent from './ChildComponent.vue'

export default {
  components: {
    ChildComponent
  }
}

组件通信

Props 传递数据 父组件向子组件传递数据:

<!-- 父组件 -->
<ChildComponent :title="parentTitle" />

<!-- 子组件 -->
<script>
export default {
  props: ['title']
}
</script>

自定义事件 子组件向父组件发送事件:

<!-- 子组件 -->
<button @click="$emit('custom-event', payload)">Click</button>

<!-- 父组件 -->
<ChildComponent @custom-event="handleEvent" />

Provide/Inject 跨层级组件通信:

vue组件的实现

// 祖先组件
export default {
  provide() {
    return {
      sharedData: this.sharedData
    }
  }
}

// 后代组件
export default {
  inject: ['sharedData']
}

动态组件

使用 <component> 标签实现动态组件切换:

<component :is="currentComponent"></component>

异步组件

通过 defineAsyncComponent 实现按需加载:

import { defineAsyncComponent } from 'vue'

const AsyncComponent = defineAsyncComponent(() =>
  import('./AsyncComponent.vue')
)

函数式组件

无状态组件可以通过函数定义:

function FunctionalComponent(props, { slots }) {
  return h('div', props, slots.default())
}

渲染函数

使用 h() 函数直接创建虚拟 DOM:

export default {
  render() {
    return h('div', { class: 'container' }, [
      h('p', 'This is rendered content')
    ])
  }
}

以上实现方式可以根据具体需求选择,单文件组件是最常见和推荐的方式,适合大多数 Vue 应用开发场景。

标签: 组件vue
分享给朋友:

相关文章

vue实现导航栏切图

vue实现导航栏切图

Vue 实现导航栏切图 使用 Vue Router 实现基础导航 在 Vue 项目中,可以通过 Vue Router 实现导航栏的路由切换。创建一个导航栏组件,并在其中使用 <router-li…

vue 实现复选

vue 实现复选

Vue 实现复选功能 在 Vue 中实现复选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以自动收集用户选择的复选框值。…

vue 实现vshow

vue 实现vshow

Vue 实现 v-show 在 Vue 中,v-show 是一个常用的指令,用于根据条件控制元素的显示或隐藏。与 v-if 不同,v-show 不会移除 DOM 元素,而是通过 CSS 的 displ…

实现vue vm

实现vue vm

Vue VM 实现方法 Vue VM(ViewModel)是 Vue.js 的核心概念之一,负责连接视图(View)和数据模型(Model)。以下是实现 Vue VM 的几种方法: 使用 Vue 实…

vue实现搜索查询

vue实现搜索查询

Vue 实现搜索查询的方法 双向绑定实现实时搜索 在Vue中可以通过v-model绑定输入框的值,结合计算属性或watch监听输入变化实现实时搜索。 <template> <i…

vue实现特效轮播

vue实现特效轮播

Vue实现特效轮播的方法 使用Vue实现轮播效果可以通过多种方式完成,以下是几种常见的实现方法。 使用Vue和CSS动画 通过Vue的动态绑定和CSS动画结合,可以实现平滑的轮播效果。 <t…