文档章节

Vue.js-混合

tianyawhl
 tianyawhl
发布于 2017/09/06 13:46
字数 549
阅读 11
收藏 0
点赞 0
评论 0

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

<body class="">
    <div id="example">
        
    </div>
    <script src="js/vue.js"></script>
    <script>
    //定义一个混合对象
    var myMixin = {
        created:function(){
            this.hello()
        },
        methods:{
            hello:function(){
                console.log("hello form mixin!")
            }
        }
    }
    //定义一个使用混合对象的组件
    var Component = Vue.extend({
        mixins:[myMixin]
    })
    var component = new Component();//hello form mixin!
    </script>
</body>

选项合并
当组件和混合对象含有同名选项时,这些选项将以恰当的方式混合。比如同名钩子函数将混合为一个数组,因此都将被调用。另外,混合对象的钩子将在组件自身钩子之前调用

<body class="">
    <div id="example">
        
    </div>
    <script src="js/vue.js"></script>
    <script>
    //定义一个混合对象
    var mixin={
        created:function(){
            console.log("混合对象的钩子被调用")
        }
    }
    new Vue({
        mixins:[mixin],
        created:function(){
            console.log("组件钩子被调用")
        }
    })
    </script>
</body>
// => "混合对象的钩子被调用"
// => "组件钩子被调用"

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

<body class="">
    <div id="example">
        
    </div>
    <script src="js/vue.js"></script>
    <script>
    var mixin={
        methods:{
            foo:function (){
                console.log("foo")
            },
            conflicting:function(){
                console.log("from mixin")
            }
        }
    }
    var vm = new Vue({
        mixins:[mixin],
        methods:{
            bar:function(){
                console.log("bar")
            },
            conflicting:function(){
                console.log("from self")
            }
        }
    })
    vm.foo()//foo
    vm.bar()//bar
    vm.conflicting()//from self
    </script>
</body>

注意:Vue.extend()也使用同样的策略进行合并

 

全局混合
也可以全局注册混合对象。注意使用!一旦使用全局混合对象,将会影响到所有之后创建的Vue实例。使用恰当时,可以为自定义对象注入处理逻辑

<body class="">
    <div id="example">
        
    </div>
    <script src="js/vue.js"></script>
    <script>
    Vue.mixin({
        created:function(){
            var myOption = this.$options.myOption
            if(myOption){
                console.log(myOption);
            }
        }
    })
    new Vue({
        myOption:"hello"
    })
    </script>

谨慎使用全局混合对象,因为会影响到每个单独创建的Vue实例(包括第三方模板),大多数情况下,只应当应用于自定义选项,就像上面实例一样,
也可以将其用作Plugins以避免产生重复应用

© 著作权归作者所有

共有 人打赏支持
tianyawhl
粉丝 1
博文 192
码字总数 88621
作品 0
常州
前端工程师
在Vue中使用JSX的正确姿势(有福利)

姿势很重要,末尾有福利 vue-antd-ui开源了一段时间后,收到了一些反馈,尤其是Form组件上线后,很多用户对JSX的使用感到迷惑和不习惯,为此专门介绍下Vue JSX的使用姿势及注意事项。 Form组...

zeka ⋅ 06/14 ⋅ 0

Step-by-step,打造属于自己的 Vue SSR

编者按:本文由 玩弄心里的鬼 发表于掘金,已授权奇舞周刊转载 笔者最近在和小伙伴对vue项目进行ssr的升级,本文笔者将根据一个简单拿vue cli构建的客户端渲染的demo一步一步的教大家打造自己...

奇舞周刊 ⋅ 04/17 ⋅ 0

记录面试中一些回答不够好的题(Vue 居多) | 掘金技术征文

相关问题 flex 布局 与 grid 布局。 实现 Vue SSR 。 从 SPA 使用最小成本迁移到 SSR 。 实现方法: (未完成) 根据指定元素,在数组里面找出 ff 数组(ff 数组这个名字是我瞎说的)。比如数...

三毛丶 ⋅ 03/04 ⋅ 0

入职第一天:前端leader手把手教我入门Vue服务器端渲染(SSR)

继前段时间西安电面之后顺利拿到了OFFER,今天(5月2号)是我入职第一天,在简短的内部培训了一上午后,前端leader让我先了解下什么是vue的服务器端渲染(SSR)。 SSR,英文全称叫 Server s...

闰土大叔 ⋅ 05/05 ⋅ 0

让IntelliJ IDEA支持.vue文件

最近将idea升级到2018的版本,需要重新配置一下vue的环境,所以随便整理了一下操作过程。 第一步:先安装vue插件: file --> settings --> plugins,然后什么都不用输入,直接点击Browse re...

四小七 ⋅ 05/11 ⋅ 0

人人都能懂的Vue源码系列(一)—Vue源码目录结构

阅读Vue的源码,或者阅读一个框架的源码,了解它的目录结构都是很有帮助的。下面我们来看看Vue源码的目录结构。 Vue各目录简介 Vue源码各个目录的详细介绍 熟悉每个模块具体的功能,对之后深...

淼淼真人 ⋅ 05/14 ⋅ 0

vue入门环境搭建及demo运行

vue简介: Vue.js 是一套构建用户界面的渐进式框架。他自身不是一个全能框架——只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。在与相关工具和支持库一起使用时,V...

挑战者666888 ⋅ 05/22 ⋅ 0

使用vue-cli(vue脚手架)快速搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目。这篇文章将会从实操的角度,介绍整个搭建的过程。 1. 避坑前言 其实这次使用vue-cli的过程并不顺利,反复尝...

四小七 ⋅ 05/09 ⋅ 0

Vue-cli 脚手架的安装与使用(详细说明)

1.1.1.1 安装Node.js 无疑Node.js是前端编程的必备环境配置之一。 安装过程非常简单,与平时安装的一般软件无异。 官方网站:https://nodejs.org/en/ Node.js自带npm包管理工具,使用npm可使...

weir_will ⋅ 04/05 ⋅ 0

入职第三天:vue-loader在项目中是如何配置的

什么是vue-loader 这是我入职第三天的故事,在写这篇文章之前,先来看看咱们今天要讲的主角——vue-loader,你对它了解多少? 这是我今天的回答,确实,vue-loader是webpack的一个loader,用...

闰土大叔 ⋅ 06/02 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 35分钟前 ⋅ 0

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 45分钟前 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 今天 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 今天 ⋅ 0

【转】JS浮点数运算Bug的解决办法

37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎...

NickSoki ⋅ 今天 ⋅ 0

table eg

user_id user_name full_name 1 zhangsan 张三 2 lisi 李四 `` ™ [========] 2018-06-18 09:42:06 星期一½ gdsgagagagdsgasgagadsgdasgagsa...

qwfys ⋅ 今天 ⋅ 0

一个有趣的Java问题

先来看看源码: public class TestDemo { public static void main(String[] args) { Integer a = 10; Integer b = 20; swap(a, b); System.out......

linxyz ⋅ 今天 ⋅ 0

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 9

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部