组件的自动化全局注册

官方地址
在使用vue构建项目的过程中,我们会设置一些通用的组件,他可能只包含了一个按钮或者其他的一个小功能,但是会被我们在不同的组件页面频繁调用。此时若是每一个组件页面都进行引用,将会有很多重复冗杂的代码,可以改为全局注册。具体如下:

  1. 将这些通用基础组件放置在同一个文件夹下:如 components/baseComponents/
  2. 在应用入口文件中全局导入(如:main.js),以下是官方示例代码,稍微做了修改:
// 全局导入组件
const requireComponent = require.context(
  // 其组件目录的相对路径
  './components/baseComponents',     
  // 是否查询其子目录
  false,                      
  // 匹配基础组件文件名的正则表达式, 这里可以匹配的文件名为BaseXxxx.vue格式
  /Base[A-Z]\w+\.(vue|js)$/   
)
 
requireComponent.keys().forEach(fileName => {
  // 获取组件配置
  const componentConfig = requireComponent(fileName)
 
  // 获取组件的 PascalCase 命名
  const componentName = upperFirst(
    camelCase(
      // 剥去文件名开头的 `'./` 和结尾的扩展名
      fileName.replace(/^\.\/(.*)\.\w+$/, '$1')
    )
  )
 

// 全局注册组件

  Vue.component(
    componentName,
    // 如果这个组件选项是通过 `export default` 导出的,
    // 那么就会优先使用 `.default`,否则回退到使用模块的根。
     componentConfig.default || componentConfig
  )
})

注意:上面这段代码必须放在 new Vue() 之前。
3. 在相应的组件页面直接使用注册好的全局组件:

<base-xxxx :title="'自动化全局注册基础组件'"></base-xxxx>

例子: // 自动注册全局组件,页面直接使用 如:

const requireCom = require.context(
  './components',
  false,
  /Mei\w+\.(vue)$|\w+\.(js)/
)
requireCom.keys().forEach(fileName => {
  const comConfig = requireCom(fileName)
  const comName = upperFirst(
    camelCase(
      // 剥去文件名开头的 `./` 和结尾的扩展名
      fileName.replace(/^\.\/(.*)\.\w+$/, '$1')
    )
  )
  Vue.component(comName, comConfig.default || comConfig)
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值