关于mixins:官方文档: https://cn.vuejs.org/v2/guide/mixins.html

一、components

  Vue.component是用来注册或获取全局组件的方法,其作用是通过vue.extend生成的扩展实例构造器注册为一个组件,全局注册的组件可以在所有晚于该组件注册语句构造的vue实例中使用。

// 先注册一个baseOptions
let baseOptions = {
template: `<p>{{ firstName }}{{ lastName }}aka {{ alias }}</p>`,
data: function(){
firstName: 'walter',
lastName: 'beijie',
alias: '贝贝'
},
created() {
console.log('One')
}
}
new Vue(baseOptions) // 实例化一个组件 -- one Vue.component('my-component', vue.extend(baseOptions))
// 传如一个选项对象(自动调用Vue.extend),等价于以上代码
Vue.component('my-component', baseOptions)
// 获取注册的组件(始终返回构造器)
const MyComponent = Vue.component(baseOptions)
// 当我我们需要在其他页面'扩展'或者叫‘混合’baseOptions时,Vue中提供了多种实现方式: extend\mixins\extends

二、extend

  可以扩展Vue构造器,从而用预定义选项创建可复用的组件构造器

let BaseComponent = Vue.extend(baseOptions)
// 基于基础组件BaseComponent,再扩展新逻辑
new BaseComponent({
created() {
console.log('Two')
}
// 其他自定义逻辑
}).$mount('#app') // 可以挂载到一个元素上
// -- One
// -- Two

三、mixins

  mixins选项接受一个混入对象的数组,这些混入实例对象可以像正常的实例对象一样包含选项,他们将在Vue.extend()里最终选择使用相同的选项合并逻辑合并。

  mixin钩子按照传入顺序依次调用,并在调用组件自身之前调用。

// mixins示例
var mixin = {
created() { console.log('mixin-created') }
} var vm = new Vue({
created() { console.log('vm-created') } ,
mixins: [mixin]
}) // -- mixin-created
// -- vm-created

  mixins的要点:

    1:data混入组件的数据优先

    2:钩子函数将混合为一个数组,混入对象的钩子将在组件钩子之前调用

    3:值为对象的,例如methods、components、directives,将被混合为同一个对象。两个对象键名冲突时,取组件对象的键值对

    4:以上合并策略可以通过Vue.config.optionMergeStrategies修改

四、extends

  允许声明扩展另一个组件(可以是一个简单的选项对象或者构造函数),而无需使用vue.extend(),主要是为了便于扩展单文件组件。和mixins类似,区别在于,组件自身的选项会比要扩展的源组件具有更高的优先级,mixins接受的是个数组类型,extends是一个对象

  

new Vue({
extends: baseOptions,
created() {
console.log('extends-created')
}
}) // One
// extends-created

五、总结

  vue.extend()只是创建一个构造器,为了创建可复用的组件

  mixins,extedns是为了扩展组件

  

Vue中mixins、extends、extend和components的作用和区别的更多相关文章

  1. vue中mixins的使用方法和注意点(详)

    mixins基础概况 vue中的解释是这样的,如果觉得语言枯燥的可以自行跳过嘿~ 混入 (mixins): 是一种分发 Vue 组件中可复用功能的非常灵活的方式.混入对象可以包含任意组件选项.当组件使 ...

  2. vue中mixins的理解及应用

    vue中mixins的理解及应用 vue中提供了一种混合机制--mixins,用来更高效的实现组件内容的复用.最开始我一度认为这个和组件好像没啥区别..后来发现错了.下面我们来看看mixins和普通情 ...

  3. Vue中Mixins使用

    mixins是一种分发Vue组件中可复用功能的一种灵活方式. mixins是一个JavaScript对象,可以包含组件中的任意选项,比如Vue实例中生命周期的各个钩子函数,也可以是data.compo ...

  4. Java泛型中<? extends E>和<? super E>的区别

    这篇文章谈一谈Java泛型声明<? extends E>和<? super E>的作用和区别 <? extends E> <? extends E> 是 ...

  5. Vue mixins extends extend components

    mixins 调用方式: mixins: [mixin1, mixin2] 是对父组件的扩充,包括methods.components.directive等... 触发钩子函数时,先调用mixins的 ...

  6. vue中mixins的使用

    与vuex的区别 经过上面的例子之后,他们之间的区别应该很明显了哈~ vuex:用来做状态管理的,里面定义的变量在每个组件中均可以使用和修改,在任一组件中修改此变量的值之后,其他组件中此变量的值也会随 ...

  7. vue中mixins的使用方法和注意点(详2)(异步请求的情况)

    当混合里面包含异步请求函数,而我们又需要在组件中使用异步请求函数的返回值时,我们会取不到此返回值,如下: mixin中 组件中 控制台 解决方案:不要返回结果而是直接返回异步函数 mixin中 组件中 ...

  8. vue中assets文件夹与static文件夹的区别

    1.如果这些产品图片文件“万年不变”,放在 /static 目录里,(不需要使用require将这些图片作为模块来引用) var products = [{ img: '/static/img/pro ...

  9. Vue中computed(计算属性)、methods、watch的区别

    实现效果:字符串的动态拼接 methods方法 html: <div id="app"> <!-- 监听到文本框数据的改变 --> <input ty ...

随机推荐

  1. LVS 工作图

    一.工作模式 1.NAT模式 -----主要是修改目标IP地址为RS的IP地址.即请求进入负载均衡器时做DNAT,响应出负载均衡器时做SNAT. 工作方式: 1)客户端请求网站,经过路由器到达负载均衡 ...

  2. springboot使用自定义注解和反射实现一个简单的支付

    优点: 未使用if else,就算以后增加支付类型,也不用改动之前代码 只需要新写一个支付类,给添加自定义注解@Pay 首先: 定义自定义注解 Pay 定义 CMBPay ICBCPay 两种支付 根 ...

  3. poi整合springboot超简单入门例子

    1.导入依赖 2.application.properties只需要数据库连接信息就可以 3.目录结构 有个没用的service,请忽略 4.Controller,因为入门列子,所以简单的导出 导入读 ...

  4. 速看,ElasticSearch如何处理空值

    大家好,我是咔咔 不期速成,日拱一卒 在MySQL中,十分不建议大家给表的默认值设置为Null,这个后期咔咔也会单独出一期文章来说明这个事情. 但你进入一家新公司之前的业务中存在大量的字段默认值为Nu ...

  5. Numpy求解线性方程组

    Numpy求解线性方程组 对于Ax=b,已知A和b,怎么算出x? 1. 引入包 2. 求解 验证

  6. word中怎么加入endnote的插件

    首先,打开Microsoft Word 2010,然后点击文件菜单,在弹出的项目中点击选项. 2 弹出Word选项对话框,在左侧导航处点击"加载项"按钮,如图. 3 在右侧内容窗口 ...

  7. Centos7 离线安装 KVM,并安装 Csr1000v

    最近需要在客户环境搭建 csr1000v,客户环境不能联网,同时使用 kvm 管理.所以需要离线安装 kvm,在利用 kvm 安装 csr100v ,中间遇到不少坑,现记录如下. 所有安装步骤是在 r ...

  8. mysql-加密函数

    1.PASSWORD(str)一般对用户的密码加密 不可逆 2.MD5(str) 普通加密 不可逆 3.ENCODE(str,pswd_str) 加密函数,结果是一个二进制数,必须使用 BLOB 类型 ...

  9. 搭建Vue小页面

    学习链接:https://blog.csdn.net/zhenzuo_x/article/details/81013475 环境搭建: 浏览器:Chrome IDE:VS Code或者WebStorm ...

  10. [翻译] Cassandra 分布式结构化存储系统

    Cassandra 分布式结构化存储系统 摘要 Cassandra 是一个分布式存储系统,用于管理分布在许多商品服务器上的大量结构化数据,同时提供无单点故障(no single point of fa ...