当前位置:首页 > VUE

vue组件化实现

2026-01-18 16:21:46VUE

Vue 组件化实现

Vue 的组件化是将 UI 拆分为独立、可复用的模块,每个模块封装自己的逻辑和样式。以下是实现 Vue 组件化的核心方法:

组件定义

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

<template>
  <div class="example">{{ message }}</div>
</template>

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

<style scoped>
.example {
  color: red;
}
</style>

组件注册

全局注册通过 Vue.component,适用于高频复用组件:

import MyComponent from './MyComponent.vue';
Vue.component('my-component', MyComponent);

局部注册在组件选项中通过 components 属性:

export default {
  components: {
    'my-component': MyComponent
  }
}

组件通信

父传子通过 props

<!-- 父组件 -->
<child-component :propName="parentData"></child-component>

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

子传父通过 $emit 触发自定义事件:

vue组件化实现

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

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

跨级组件通信可使用 provide/inject

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

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

动态组件

通过 <component :is> 实现动态渲染:

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

插槽(Slot)

默认插槽:

vue组件化实现

<!-- 子组件 -->
<slot>Fallback Content</slot>

<!-- 父组件 -->
<child-component>Custom Content</child-component>

具名插槽:

<!-- 子组件 -->
<slot name="header"></slot>

<!-- 父组件 -->
<template v-slot:header>Header Content</template>

作用域插槽允许子组件向插槽传递数据:

<!-- 子组件 -->
<slot :user="userData"></slot>

<!-- 父组件 -->
<template v-slot:default="slotProps">{{ slotProps.user.name }}</template>

生命周期钩子

关键生命周期方法包括:

  • created:实例创建后
  • mounted:DOM 挂载后
  • updated:数据更新后
  • destroyed:实例销毁后

组合式 API(Vue 3)

使用 setup() 函数组织逻辑:

<script>
import { ref, computed } from 'vue';

export default {
  setup() {
    const count = ref(0);
    const double = computed(() => count.value * 2);

    return { count, double };
  }
}
</script>

注意事项

  • 组件命名建议使用 PascalCase 或 kebab-case
  • 避免直接修改 props,应使用事件通信
  • 合理划分组件职责,保持高内聚低耦合
  • 对于复杂状态管理可结合 Vuex 或 Pinia

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

相关文章

vue实现多层评论回复

vue实现多层评论回复

Vue 实现多层评论回复 数据结构设计 多层评论通常采用嵌套结构,每个评论对象包含子评论数组。示例数据结构如下: comments: [ { id: 1, content: '父…

vue实现图库

vue实现图库

Vue 实现图库的基本方法 使用 Vue 实现图库功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用 Vue 和第三方库(如 Vue Gallery) 安装 vue-gallery 或…

vue实现pie

vue实现pie

Vue 实现饼图 在 Vue 中实现饼图通常可以通过第三方图表库(如 ECharts、Chart.js 或 Highcharts)来完成。以下是使用 ECharts 和 Chart.js 的两种常见方…

vue实现cs

vue实现cs

Vue 实现 CS(Client-Side)渲染的常见方法 Vue.js 是一个用于构建用户界面的渐进式框架,默认采用客户端渲染(CSR)。以下是几种常见的实现方式: 使用 Vue CLI 创建项目…

vue 实现回复

vue 实现回复

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

vue实现ios

vue实现ios

Vue 实现 iOS 风格应用 使用 Vue 实现 iOS 风格的应用,可以通过结合 UI 框架和自定义样式来达成目标。以下是具体方法和步骤: 选择 iOS 风格的 UI 框架 Vue 生态中有多…