美文网首页
组件注册

组件注册

作者: 静小弟 | 来源:发表于2020-02-19 11:26 被阅读0次

    全局注册

    • ASSET_TYPES
      • component
      • directive
      • filter
    Vue.component(id,{})
    
    • 实现

      // 遍历ASSET_TYPES,给Vue拓展一个方法Vue[type]
      ASSET_TYPES.forEach(type => {
          Vue[type] = function(
            id: string,
              definition: Funcion|Object
          ) {
              // type === 'component' 并且definition是一个普通 对象,通过vue.extend将定义的对象转化成构造器
              if (type === 'component' && isPlainObject(definition){
                  definition = this.options._base.extend(definiton)
                  }
                  // 最后给vue.components全局扩展了这样一个定义
          }
      })
      
      // createElement的创建逻辑
      // 先判断这个tag是不是一个保留便签,是,则创建一个普通的html便签
      // 然后通过resolveAsset方法来查找id,id => 驼峰id => 手字符大写id => 原型上的id,如果找不到,则创建一个不认识的vnode
      

    局部注册

    export default{
        name: 'App',
        components:{
            HelloWorld
        }
    }
    
    • 实现
      • 子组件在sub.option中合并components选项,在resolveAsset中拿到定义的组件
      • vm.$options.components可以访问到子组件

    相关文章

      网友评论

          本文标题:组件注册

          本文链接:https://www.haomeiwen.com/subject/npzofhtx.html