vue怎么实现组件
Vue 组件实现方法
Vue 组件可以通过多种方式实现,以下是常见的几种方法:
单文件组件 (SFC)
使用 .vue 文件格式,将模板、脚本和样式封装在一个文件中。
<template>
<div class="example">{{ msg }}</div>
</template>
<script>
export default {
data() {
return {
msg: 'Hello Vue!'
}
}
}
</script>
<style>
.example {
color: red;
}
</style>
全局注册组件
通过 Vue.component 方法全局注册组件,可在任何地方使用。
Vue.component('my-component', {
template: '<div>A custom component!</div>'
})
局部注册组件
在 Vue 实例的 components 选项中局部注册组件,仅在当前实例范围内可用。
new Vue({
el: '#app',
components: {
'my-component': {
template: '<div>A local component!</div>'
}
}
})
动态组件
使用 <component> 标签配合 is 属性实现动态组件切换。
<template>
<component :is="currentComponent"></component>
</template>
<script>
export default {
data() {
return {
currentComponent: 'component-a'
}
},
components: {
'component-a': { template: '<div>Component A</div>' },
'component-b': { template: '<div>Component B</div>' }
}
}
</script>
函数式组件
无状态、无实例的组件,适合纯展示型组件。
Vue.component('functional-button', {
functional: true,
render(createElement, context) {
return createElement('button', context.data, context.children)
}
})
异步组件
通过动态导入实现按需加载,优化性能。
Vue.component('async-component', () => import('./AsyncComponent.vue'))
组件通信方式
- Props 向下传递数据
- 自定义事件向上传递消息
- Provide/Inject 跨层级数据传递
- Vuex 状态管理
- Event Bus 事件总线
生命周期钩子
组件可以定义生命周期钩子函数,在不同阶段执行特定逻辑。
export default {
created() {
console.log('Component created')
},
mounted() {
console.log('Component mounted')
}
}
插槽
使用插槽实现内容分发,增强组件灵活性。
<template>
<div class="container">
<slot name="header"></slot>
<slot></slot>
<slot name="footer"></slot>
</div>
</template>
Mixins
通过混入复用组件逻辑。

const myMixin = {
created() {
this.hello()
},
methods: {
hello() {
console.log('hello from mixin!')
}
}
}
export default {
mixins: [myMixin]
}






