vue -- 注册组件

一、全局组件

1、组件名称

命名的时候:串联或者驼峰

component-name
componentName

使用的时候必须全部小写串联

<component-name></component-name>

注册方式
全局注册的组件一定要写在vue实例之前,否则没有效果,全局组件可以在所有组件中使用

Vue.component('componentName',{
    // options,这里其实相当于一个extends对象
})

二、局部组件

1、子组件

有点类似创建一个extends拓展,子组件只能在注册的组件里面使用

let componentName = { /* options */ }

// 声明的子组件必须在vue实例中注册了才能使用
let app = new Vue({
    components: {
        'div': componentName
    }
})

2、公共组件

其实每一个vue文件都可以看作是一个组件,我们可以引入这个vue文件,在想要展示页面展示出来

import ComponentName from '../components/mycomponent.vue'

// 注册组件
let app = new Vue({
    components: {
        'div':  ComponentName
    }
})

// 在vue-cli里面经常这么写
export default {
    components: {
        ComponentName   => // 这个是es6的写法好像,如果key和value是一样的,则可以直接写value,不用再写key
    }
}

三、自动化全局注册基本组件

通过require.context来全局注册这些常用基础组件

import Vue from 'vue'
import upperFirst from 'lodash/upperFirst'
import camelCase from 'lodash/camelCase'

const requireComponent = require.context(
  // components 文件夹的相对路径
  './components',
  // 是否查找子文件夹
  false,
  // 用于匹配组件文件名的正则表达式
  /Base[A-Z]\w+\.(vue|js)$/
)

requireComponent.keys().forEach(fileName => {
  // 获取组件配置
  const componentConfig = requireComponent(fileName)

  // 取得组件的 Pascal 式命名
  const componentName = upperFirst(
    camelCase(
      // 将文件名前面的 `./` 和扩展名剥离
      fileName.replace(/^\.\/(.*)\.\w+$/, '$1')
    )
  )

  // 以全局方式注册组件
  Vue.component(
    componentName,
    // 如果组件是通过 `export default` 导出,
    // 则在 `.default` 中,查找组件选项,
    // 否则回退至模块根对象中,查找组件选项
    componentConfig.default || componentConfig
  )
})

转载于:https://www.cnblogs.com/zjh-study/p/10678829.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值