Vue中mixins、extends、extend和components的作用和区别
关于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的作用和区别的更多相关文章
- vue中mixins的使用方法和注意点(详)
mixins基础概况 vue中的解释是这样的,如果觉得语言枯燥的可以自行跳过嘿~ 混入 (mixins): 是一种分发 Vue 组件中可复用功能的非常灵活的方式.混入对象可以包含任意组件选项.当组件使 ...
- vue中mixins的理解及应用
vue中mixins的理解及应用 vue中提供了一种混合机制--mixins,用来更高效的实现组件内容的复用.最开始我一度认为这个和组件好像没啥区别..后来发现错了.下面我们来看看mixins和普通情 ...
- Vue中Mixins使用
mixins是一种分发Vue组件中可复用功能的一种灵活方式. mixins是一个JavaScript对象,可以包含组件中的任意选项,比如Vue实例中生命周期的各个钩子函数,也可以是data.compo ...
- Java泛型中<? extends E>和<? super E>的区别
这篇文章谈一谈Java泛型声明<? extends E>和<? super E>的作用和区别 <? extends E> <? extends E> 是 ...
- Vue mixins extends extend components
mixins 调用方式: mixins: [mixin1, mixin2] 是对父组件的扩充,包括methods.components.directive等... 触发钩子函数时,先调用mixins的 ...
- vue中mixins的使用
与vuex的区别 经过上面的例子之后,他们之间的区别应该很明显了哈~ vuex:用来做状态管理的,里面定义的变量在每个组件中均可以使用和修改,在任一组件中修改此变量的值之后,其他组件中此变量的值也会随 ...
- vue中mixins的使用方法和注意点(详2)(异步请求的情况)
当混合里面包含异步请求函数,而我们又需要在组件中使用异步请求函数的返回值时,我们会取不到此返回值,如下: mixin中 组件中 控制台 解决方案:不要返回结果而是直接返回异步函数 mixin中 组件中 ...
- vue中assets文件夹与static文件夹的区别
1.如果这些产品图片文件“万年不变”,放在 /static 目录里,(不需要使用require将这些图片作为模块来引用) var products = [{ img: '/static/img/pro ...
- Vue中computed(计算属性)、methods、watch的区别
实现效果:字符串的动态拼接 methods方法 html: <div id="app"> <!-- 监听到文本框数据的改变 --> <input ty ...
随机推荐
- 学习FastDfs(三)
FASTDFS是什么 FastDFS是由国人余庆所开发,其项目地址:https://github.com/happyfish100 FastDFS是一个轻量级的开源分布式文件系统,主要解决了大容量的文 ...
- 业务网关之AK中心建设
啥是AK AK(Access Key)是一种身份证明,它解决了"资源的使用者是谁"这个问题,比如在生活中,身份证可以证明你是你,而在云计算或程序中,AK能证明你是这个应用的拥有者. ...
- Leetcode刷题之矩阵中的指针用法
矩阵中的指针用法 1 快慢指针 Leetcode27移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度.不要使用额外的数组 ...
- 百度开放云 BOS Uploader
百度开放云 BOS Uploader bce-bos-uploader 是基于 bce-sdk-js 开发的一个 ui 组件,易用性更好.DEMO地址是:http://leeight.github.i ...
- c++语法拾遗,一些细节与特性
写了2年多的C+STL的acmer,在学习<C++ primer>时总结的一些少见的语法特性与细节.总体还是和题目说的一样这是一篇 c++ 拾遗. 1 变量和基本类型 1.1 基本类型 1 ...
- Hadoop伪分布式集群实现SSH免密登录
在启动Hadoop时候报了这样一个错误: Starting namenodes on [hadoop] hadoop: (Permission denied (publickey,gssapi-key ...
- jboss7学习3-jboss安装 访问(外网)添加用户
一.下载安装 1.下载地址: http://www.jboss.org/jbossas/downloads ,下载Certified Java EE 6 Full Profile版本. 2.解压 jb ...
- Go语言 映射(map)
Go语言 映射(map) 1. 什么是 map2. 创建 map3. 访问 map4. nil map和空map5. map中元素的返回值6. len()和delete()7. 测试map中元素是否 ...
- Java-GUI编程之绘图
绘图 很多程序如各种小游戏都需要在窗口中绘制各种图形,除此之外,即使在开发JavaEE项目时,有时候也必须"动态"地向客户 端生成各种图形.图表,比如 图形验证码.统计图等,这都需 ...
- spring data es操作es
https://www.freesion.com/article/59481222940/