vue组件的封装及使用,全局注册和页面注册

1.在src/components文件夹下创建新的公共组件

(没有components就新建一个)


<template>
  <el-card>
    <div class="page-tools">
      <!-- 左侧 -->
      <div class="left">
        <div class="tips">
          <i class="el-icon-info" />
          <slot name="left">     <span>文字区域</span> </slot>

        </div>
      </div>
      <div class="right">
        <!-- 右侧 -->
        <slot name="right">按钮区域 </slot>
      </div>
    </div>
  </el-card>
</template>

2.在其他组件中导入、注册、使用该公共组件


import pagetools from '@/components/PageTools'
export default {
  components: {
    pagetools
  }
}

<pagetools></pagetools>
<pagetools />

3.插槽传值修改公共组件适合自己页面

3.1公共组件设定插槽和默认值

给slot设定一个name值

  • 默认组件显示


<template>
  <el-card>
    <div class="page-tools">
      <!-- 左侧 -->
      <div class="left">
        <div class="tips">
          <i class="el-icon-info" />
          <slot name="left">     <span>文字区域</span> </slot>

        </div>
      </div>
      <div class="right">
        <!-- 右侧 -->
        <slot name="right">按钮区域 </slot>
      </div>
    </div>
  </el-card>
</template>

3.2使用插槽传入特定内容

使用template标签在标签内#slot名,然后在template双标签内传过去html内容

  • 特定内容显示在组件中


 <pagetools>
   <template #left>
     <span>测试</span>
     <span>测试2</span>
        </template>
   <template #right>
     <span>测试</span>
     <span>测试2</span>
   </template>
</pagetools>

4.全局注册组件Vue.component()

4.1局部组件,使用的时候需要在components中注册;全局通用组件一般是定义为全局组件的,不需要局部注册;在main.js中使用Vue.component()全局注册:


import Vue from 'vue'
// 全局注册组件
import PageTools from '@/components/PageTools'
Vue.component('PageTools', PageTools)

5.使用Vue.use全局注册组件

5.1在main.js中引入

  1. Vue.use 可以接收一个对象,Vue.use(obj)

  1. 对象obj中需要提供一个 install 函数

  1. 在 Vue.use(obj) 时,会自动调用该 install 函数,并传入 Vue构造器


// 全局注册组件
import PageTools from '@/components/PageTools'
const components = {
  install(Vue) {
    Vue.component('PageTools', PageTools)
  }
}
Vue.use(components)

5.2封装

把所有组件注册在src/components/index.js文件中


// 全局注册组件
import PageTools from '@/components/PageTools'
export default {
  install(Vue) {
    Vue.component('PageTools', PageTools)
  }
}

5.3 在main.js中全局注册组件


import components from '@/components/index'

Vue.use(components)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋绥冬禧.

一键三联就是最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值