Vue2.0中组件的继承与扩展是什么

发布时间:2020-12-07 14:04:09

来源:亿速云

阅读:100

作者:小新

小编给大家分享一下Vue2.0中组件的继承与扩展是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、slot

1.默认插槽和匿名插槽

slot用来获取组件中的原内容,此方式用于父组件向子组件传递“标签数据”。有的时候为插槽提供默认的内容是很有用的,例如,一个 组件可能希望这个按钮的默认内容是“如果没有原内容,则显示该内容”,但是同时允许用户覆写为别的内容。

180812

welcome to xiamen

如果没有原内容,则显示该内容// 默认插槽

var vm=new Vue({

el:'#itany',

components:{

'my-hello':{

template:'#hello'

}

}

});

2.具名插槽

有些时候我们需要多个插槽, 元素有一个特殊的特性:name。这个特性可以用来定义额外的插槽:

  • aaa
  • bbb
  • ccc
  1. 111
  2. 222
  3. 333

welcome to xiamen

var vm=new Vue({

el:'#itany',

components:{

'my-hello':{

template:'#hello'

}

}

});

二、mixins

1.mixins简介

混入 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。mixins 选项接受一个混合对象的数组。

2.mixins用途

一般有两种用途:

1、在你已经写好了构造器后,需要增加方法或者临时的活动时使用的方法,这时用混入会减少源代码的污染。

2、很多地方都会用到的公用方法,用混入的方法可以减少代码量,实现代码重用。

例如下面的例子:实现每次数据变化时都能够在控制台打印出提示:"数据发生变化"

Mixins


num:{{ num }}

增加数量

var addLog = { //额外临时加入时,用于显示日志

updated: function () {

console.log("数据发生变化,变化成" + this.num + ".");

}

}

Vue.mixin({// 全局注册一个混入,影响注册之后所有创建的每个 Vue 实例

updated: function () {

console.log("我是全局的混入")

}

})

var app = new Vue({

el: '#app',

data: {

num: 1

},

methods: {

add: function () {

this.num++;

}

},

updated() {

console.log("我是原生的update")

},

mixins: [addLog]//混入

})

3.mixins的调用顺序

上例说明了:从执行的先后顺序来说,混入对象的钩子将在组件自身钩子之前调用,如果遇到全局混入(Vue.mixin),全局混入的执行顺序要前于混入和组件里的方法。

三、extends

1.extends用法

extends选项允许声明扩展另一个组件,而无需使用 Vue.extend。

通过外部增加对象的形式,对构造器进行扩展。它和混入mixins非常的类似。只不过接收的参数是简单的选项对象或构造函数,所以extends只能单次扩展一个组件。

Extends


num:{{ num }}

add

var bbb = {

updated() {

console.log("我是被扩展出来的");

},

methods: {

add: function () { //跟原生的方法冲突,取原生的方法,这点跟混入一样

console.log('我是被扩展出来的add方法!');

this.num++;

}

}

};

var app = new Vue({

el: '#app',

data: {

num: 1

},

methods: {

add: function () {

console.log('我是原生add方法');

this.num++;

}

},

updated() {

console.log("我是扩展出来的");

},

extends: bbb// 接收对象和函数

})

从上面的例子也可看出,执行的先后顺序和mixins一样,另外扩展的方法与原生的冲突时,扩展的方法不生效,这点跟混入一样。

2.extends和mixins优先级比较var extend={

data:{extendData:'我是extend的data'},

created:function(){

console.log('这是extend的created');

}

}

var mixin={

data:{mixinData:'我是mixin的data'},

created:function(){

console.log('这是mixin的created');

}

}

var vm=new Vue({

el:'#app',

data:{mixinData:'我是vue实例的data'},

created:function(){

console.log('这是vue实例的created');

},

methods:{

getSum:function(){

console.log('这是vue实例里面getSum的方法');

}

},

mixins:[mixin],

extends:extend

})

由此可以得出,相对于mixins,extends触发的优先级更高

四、extend

Vue.extend只是创建一个构造器,它是为了创建可复用的组件。其主要用来服务于Vue.component,用来生成组件

/**

* 方式1:先创建组件构造器,然后由组件构造器创建组件

*/

//1.使用Vue.extend()创建一个组件构造器

var MyComponent = Vue.extend({

template: '

Hello World

'

});

//2.使用Vue.component(标签名,组件构造器),根据组件构造器来创建组件

Vue.component('hello', MyComponent);

/**

* 方式2:直接创建组件(推荐)

*/

// Vue.component('world',{

Vue.component('my-world', {

template: '

你好,世界

'

});

var vm = new Vue({ //这里的vm也是一个组件,称为根组件Root

el: '#itany',

data: {}

});

以上是“Vue2.0中组件的继承与扩展是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

vue 对象继承_Vue2.0中组件的继承与扩展是什么相关推荐

  1. vue复选框组件自定义对勾_vue2.0中ckeckbox(复选框)的使用心得,及对click事件和change的理解...

    最近在公司项目中使用vue2.0做开发,在使用checkbox时遇到了一些问题,首先我们先了解一下需求. 如上如所示,在上方复选框被点击时,更改下方p标签的文本内容为:复选框已被选中.并将p标签文字颜 ...

  2. Spring Boot2.0+中,自定义配置类扩展springMVC的功能

    在spring boot1.0+,我们可以使用WebMvcConfigurerAdapter来扩展springMVC的功能,其中自定义的拦截器并不会拦截静态资源(js.css等). @Configur ...

  3. vue 声明周期函数_Vue2.0 探索之路——生命周期和钩子函数的一些理解

    前言 在使用vue一个多礼拜后,感觉现在还停留在初级阶段,虽然知道怎么和后端做数据交互,但是对于mounted这个挂载还不是很清楚的.放大之,对vue的生命周期不甚了解.只知道简单的使用,而不知道为什 ...

  4. id vue2路由传参_Vue2.0中 $route 和 $router 的区别

    在做Vue项目时,在路由设置和跳转时有没有遇到过 $route 和 $router?乍一看,两个看起来几乎一模一样,有点傻傻分不清楚,他们到底有什么区别?在什么情况下用呢? 我们把这2个在控制台打印出 ...

  5. C++中不同的继承方式

    文章目录 1 C++中不同的继承方式 1.1 继承中被忽视的细节 1.2 不同的继承方式 1.3 继承中只选择public继承 1 C++中不同的继承方式 1.1 继承中被忽视的细节 如下: 1.2 ...

  6. vue2.0中组建里面套用组件_vue2.0如何嵌套组件

    显示子组件数据 {{ msg }} {{ msg }} 在2.0中这样使用浏览器会报错:[Vue warn]: Component template should contain exactly on ...

  7. html5怎么改为vue_是否还在疑惑Vue.js中组件的data为什么是函数类型而不是对象类型...

    点击上方"前端印象",选择"设为星标"第一时间关注技术干货! 引言 要理解本篇文章,必须具备JavaScript中基本数据类型和引用数据类型的概念,大家可以花两 ...

  8. 谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo

    谈谈我对前端组件化中"组件"的理解,顺带写个Vue与React的demo 前言 前端已经过了单兵作战的时代了,现在一个稍微复杂一点的项目都需要几个人协同开发,一个战略级别的APP的 ...

  9. Vue中“组件”知识总结

    目录 组件 组件的复用 组件的注册 组件名 放置限制 通过 Prop 向子组件传递数据 单向数据流 poro的验证 属性继承 自定义事件 插槽 动态组件 Provide / Inject 异步组件 组 ...

最新文章

  1. 对集合使用Comparator
  2. python基础教程:修改Python列表中元素的几种方法
  3. cmd,powershell,的字体颜色永久改变,;以及两者不同打开方式和其各自的区别。
  4. mysql out_mysql存储过程 in out inout
  5. Go泛型草案设计简明指南
  6. 【转】解决XMLHTTP获取网页中文乱码问题
  7. java angularjs 跨域访问_AngularJS实现跨域请求
  8. 超声主瓣,旁瓣,栅瓣概念解析
  9. (转)《精通比特币》原码分析: pow机制
  10. Python 安装skimage即Scikit-Image
  11. 老K整理|4月|物流技术圈职位招聘合集!
  12. 史上最全的 iOS测试工具集锦(自动化、性能)
  13. STM32F103单片机驱动蜂鸣器
  14. 导纳矩阵 matlab,matlab实现导纳矩阵
  15. div中border属性
  16. 江南大学计算机考研资料汇总
  17. php7国内,介绍php7和php5对比
  18. 搞IT的you知道这些么……
  19. PowerMock使用-Mock私有方法
  20. CDP产品大观之“准CDP”

热门文章

  1. 安装npm_Npm安装包的版本号是如何更新的?
  2. python案例实操_用案例实操学习Python ,培养编程逻辑思维
  3. fopen php 读取_PHP使用fopen与file_get_contents读取文件实例分享
  4. ①你真的学会Java了吗?来自《卷Ⅰ》的灵魂提问
  5. PowerDesigner15连接Oracle数据库并导出Oracle的表结构
  6. SQL查询语句 group by后, 字符串合并
  7. 【python】 time模块和datetime模块详解 【转】
  8. [8086汇编]利用栈翻转内存数据
  9. 14-项目开发总结报告(GB8567——88)
  10. Guava翻译系列之EventBus