vue+webpack注册全局组件 -- require.context()

components目录
global //全局组件目录
install.js // 注册全局组件
dialog.vue // 全局组件内容
install.js //

// 一次引入终身受用
/**
 * require.context()参数的意义
 * 参数1.文件目录
 * 参数2.是否查找子集
 * 参数3.查找规则
 */
const requireComponent = require.context('./', true, /\.vue$/)
const install = (Vue) => {
  // 如果组件被注册就返回,没有就注册
  if (install.installed) return
  install.installed = true
  requireComponent.keys().forEach(filename => {
    // filename 文件
    // 第i个组件
    const config = requireComponent(filename)
    // 组件名
    const componentName = config.default.name
    // 循环注册组件
    Vue.component(componentName, config.default || config)
  })
}

export default {
  install
}

dialog.vue文件

<div class="comdialog">
  <el-dialog>
    <div>
      <!-- 父组件中自定义标签 -->
      <slot></slot>
    </div>
  </el-dialog>
</div>
<script>
  export default {
    name: 'comDialog',  //name为组件名称
    props: {
      dialogList: Object
    },
    data() {
      return {
        dataList: this.dialogList
      }
    },
  }
</script>

main.js

 import template from './components/global/install.js'  //全局组件
 Vue.use(template)

页面中使用

<com-dialog></com-dialog>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值