vue.extend

使用基础 Vue 构造器函数,通过原型继承,(返回)创建一个“子类”(构造器)。参数是一个包含组件选项的对象。

const Sub = function VueComponent (options) {
this._init(options)
}
Sub.prototype = Object.create(Super.prototype)
Sub.prototype.constructor = Sub

vue.component

注册或获取全局组件。注册还会自动使用给定的id设置组件的名称。内部实质上调用了vue.extend,最后返回"子类"(构造器),这个子类构造器。

vue.component方法的定义中有如下代码:

// 此处 this 是 Vue ; this.options._base也是Vue  ;相当于Vue.extend
definition = this.options._base.extend(definition)
...
return definition

综合例子如下:

var Component1 = Vue.component('any',{
template:'<div>Component1</div>'
}) var Component2 = Vue.extend({
template:'<div>Component2</div>'
})
console.log(Component1);
console.log(Component2);
var App = Vue.extend({
components:{Component1,Component2},
data() {
return {
a: 12
}
},
template: `<div>
{{this.a}}
<any/>
<Component1/>
<Component2/>
</div>`,
}) new Vue({
render(h){
return h(App)
}
}).$mount('#app')
  • 通过components注册了一个全局any组件,可以在App中直接使用。
  • Component1和Component2这两个构造函数通过局部注册之后,也可以在App中使用

components:{组件一,组件二}

单文件vue中经常会通过import引入其他组件,然后在本组件中注册和使用,代码:

<template>
<Icon/>
</template>
<script>
import Icon from './icon.vue'
console.log(Icon)
export default {
components:{Icon}
}
</script>

打印Icon,发现Icon是一个对象,既可以是对象也可以是函数,Vue内部是如何处理的呢?

在vue内部创建虚拟dom的时候有如下的代码:

if (isObject(Ctor)) {
Ctor = baseCtor.extend(Ctor)
}

此处的Ctor对应着上面的Icon,当判断是对象的时候会调用extend方法,也就是vue.extend方法,返回一个子类构造函数,殊途同归。

vue.extend和vue.component的区别的更多相关文章

  1. 前端框架vue.js系列(9):Vue.extend、Vue.component与new Vue

    前端框架vue.js系列(9):Vue.extend.Vue.component与new Vue 本文链接:https://blog.csdn.net/zeping891103/article/det ...

  2. Vue vue.extend 和vue.component 两则之间的区别

    Vue.extend 返回的是一个 扩展实例构造器, 也就是一个预设了部分选项的Vue实例构造器 Var myExtend = Vue.extend({ //预设选项 })//返回一个 扩展实例构造器 ...

  3. vue.extend与vue.component的区别和联系

    一味的闷头开发,却对基础概念缺乏理解,是个大坑... 查阅官网后现对自己的理解记录一下,用于日后复习巩固 Vue.extend({}) 简述:使用vue.extend返回一个子类构造函数,也就是预设部 ...

  4. Vue官方文档Vue.extend、Vue.component、createElement、$attrs/$listeners、插槽的深入理解

    一.Vue.extend({}). 看官网文档介绍,Vue.extend({})返回一个Vue的子类,那么这个Vue子类是啥玩意儿呢?我直观感觉它就是创建出一个组件而已啊,那么它又和Vue.compo ...

  5. Vue.extend和Vue.component的联系与差异

    extend 是构造一个组件的语法器. 你给它参数 他给你一个组件 然后这个组件 你可以作用到Vue.component 这个全局注册方法里, 也可以在任意vue模板里使用apple组件 var ap ...

  6. Vue.mixin Vue.extend(Vue.component)的原理与区别

    1.本文将讲述 方法 Vue.extend Vue.mixin 与 new Vue({mixins:[], extend:{}})的区别与原理 先回顾一下 Vue.mixin 官网如下描述: Vue. ...

  7. vue extend 的基本使用

    vue.extend 局部注册 的应用2 请注意,extend创建的是一个组件构造器,而不是一个具体的组件实例.所以他不能直接在new Vue中这样使用: new Vue({components: f ...

  8. Vue.extend动态注册子组件

    写本篇文章之前其实也关注过vue中的一个关于加载动态组件is的API,最开始研究它只是用来实现一个tab切换的功能,使用起来也蛮不错的. is 预期:string | Object (组件的选项对象) ...

  9. 【js】vue 2.5.1 源码学习 (三) Vue.extend 和 data的合并策略

    大体思路 (三)  1. 子类父类  2.Vue.extend()      //创建vue的子类 组件的语法器 Vue.extend(options) Profile().$mount('#app' ...

随机推荐

  1. Elasticsearch源码解析:环境搭建

    在之前学习Redis的过程中,我就是一边通过文档/视频学习,一边阅读源码.我发现两种方法可以相辅相成,互相补充.阅读文档可以帮助我们快速了解某个功能,阅读源码有助于我们更深入的理解这一功能的实现及思想 ...

  2. idea 导入eclipse play1.2.7项目

    1.play eclipsify #myapp 转为eclipse目录结构 2.导入eclipse,一路next. 3.新增个Application -Xms1536m-Xmx2048m-Xdebug ...

  3. 从Python开始学编程|PDF百度网盘免费下载|Python新手入门

    百度网盘免费下载:从Python开始学编程|附PDF免费下载 提取码:7nkf 豆瓣评分: 本书封面: 读者评论: 内容简介  · · · · · · 改编自Vamei博客的<Python快速教 ...

  4. MySQL数据管理

    3.MySQL数据管理 3.1外键 方式一:  create table `grade`(  `gradeid` int(10) not null auto_increment comment '年纪 ...

  5. 总结HashMap实现原理分析

    一.底层数据结构在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的键值对会被放在同一个位桶里,当桶中元素较多时,通过key值查找的效率较低. 而JD ...

  6. Django学习路22_empty为空,forloop.counter 从1计数,.counter0 从0计数 .revcounter最后末尾数字是1,.revcounter0 倒序,末尾为 0

    当查找的数据不存在,返回为 空时 在 html 中使用 {%empty%} 语句 进行显示 def getstudents(request): students = Student.objects.a ...

  7. Python os.statvfs() 方法

    概述 os.statvfs() 方法用于返回包含文件描述符fd的文件的文件系统的信息.高佣联盟 www.cgewang.com 语法 statvfs()方法语法格式如下: os.statvfs([pa ...

  8. Python os.dup2() 方法

    概述 os.dup2() 方法用于将一个文件描述符 fd 复制到另一个 fd2.高佣联盟 www.cgewang.com Unix, Windows 上可用. 语法 dup2()方法语法格式如下: o ...

  9. PHP isset() 函数

    isset() 函数用于检测变量是否已设置并且非 NULL.高佣联盟 www.cgewang.com 如果已经使用 unset() 释放了一个变量之后,再通过 isset() 判断将返回 FALSE. ...

  10. PHP xml_get_current_line_number() 函数

    定义和用法 xml_get_current_line_number() 函数获取 XML 解析器的当前行号.高佣联盟 www.cgewang.com 如果成功,该函数则返回当前行号.如果失败,则返回 ...