在Vue.js中如何使用Mixins?
2017-09-20 23:34
531 查看
本文和大家分享的主要是在Vue.js中使用Mixins相关内容,一起来看看吧,希望对大家学习Vue.js有所帮助。
一个很常见的场景: 有两个非常相似的组件, 它们拥有非常相似的基本功能, 但是它们之间又有足够的不同的地方, 该如何选择呢? 我们是应该将它们分成两个完全不同的组件呢? 还是创建一个基础组件, 然后定义足够多的props以方便区分使用场景?
这两种方式都不是完美的: 如果你将它们分成两个完全不同的组件, 在需求变化(功能变化)时, 可能会增加需要同时修改两个组件的风险, 这违反了”DRY”的前提. 另一方面, 太多的props很快会让人变得凌乱, 并且, 迫使维护人员, 甚至是你自己, 要首先理解这些props的上下文才能使用它, 这会让人非常失望.
Vue的Mixins是非常实用的编程方式, 因为最终实用的编程是通过不断减少运动部件(moving
parts)使代码变得容易理解. (关于这一点,
Michael Feathers有一个很好的引用). 一个mixin允许你封装一个功能, 以便你能在整个应用程序中的不同组件中使用它. 如果mixin被正确的创建, 它们是纯粹的–它们不会修改或更改函数的作用范围(scope)之外的内容, 因此, 您可以在多个地方执行它们, 并且只要输入值相同, 总是能非常可靠得得到相同的结果. 这真的非常强大.
认识Mixins
混合 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混合对象可以包含任意组件选项。以组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项。
栗子
假设我们有一些不同的组件, 它们的工作是切换状态boolean, 一个模态(modal)和一个提示(tooltip). 这些tooltips和modals没有很多共同之处, 除了这个功能: 它们看起来不一样, 它们使用起来也不尽相同, 但是它们的逻辑是相似的 .
//modal
const Modal = {
template: '#modal',
data() {
return {
isShowing: false
}
},
methods: {
toggleShow() {
this.isShowing = !this.isShowing;
}
}
}
//tooltip
const Tooltip = {
template: '#tooltip',
data() {
return {
isShowing: false
}
},
methods: {
toggleShow() {
this.isShowing = !this.isShowing;
}
}
}
我们可以从中提取逻辑, 并创建可以复用的部分:
const toggle = {
data() {
return {
isShowing: false
}
},
methods: {
toggleShow() {
this.isShowing = !this.isShowing;
}
}
}
const Modal = {
template: '#modal',
mixins: [toggle]
};
const Tooltip = {
template: '#tooltip',
mixins: [toggle]
};
来源:Hzzly
一个很常见的场景: 有两个非常相似的组件, 它们拥有非常相似的基本功能, 但是它们之间又有足够的不同的地方, 该如何选择呢? 我们是应该将它们分成两个完全不同的组件呢? 还是创建一个基础组件, 然后定义足够多的props以方便区分使用场景?
这两种方式都不是完美的: 如果你将它们分成两个完全不同的组件, 在需求变化(功能变化)时, 可能会增加需要同时修改两个组件的风险, 这违反了”DRY”的前提. 另一方面, 太多的props很快会让人变得凌乱, 并且, 迫使维护人员, 甚至是你自己, 要首先理解这些props的上下文才能使用它, 这会让人非常失望.
Vue的Mixins是非常实用的编程方式, 因为最终实用的编程是通过不断减少运动部件(moving
parts)使代码变得容易理解. (关于这一点,
Michael Feathers有一个很好的引用). 一个mixin允许你封装一个功能, 以便你能在整个应用程序中的不同组件中使用它. 如果mixin被正确的创建, 它们是纯粹的–它们不会修改或更改函数的作用范围(scope)之外的内容, 因此, 您可以在多个地方执行它们, 并且只要输入值相同, 总是能非常可靠得得到相同的结果. 这真的非常强大.
认识Mixins
混合 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混合对象可以包含任意组件选项。以组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项。
栗子
假设我们有一些不同的组件, 它们的工作是切换状态boolean, 一个模态(modal)和一个提示(tooltip). 这些tooltips和modals没有很多共同之处, 除了这个功能: 它们看起来不一样, 它们使用起来也不尽相同, 但是它们的逻辑是相似的 .
//modal
const Modal = {
template: '#modal',
data() {
return {
isShowing: false
}
},
methods: {
toggleShow() {
this.isShowing = !this.isShowing;
}
}
}
//tooltip
const Tooltip = {
template: '#tooltip',
data() {
return {
isShowing: false
}
},
methods: {
toggleShow() {
this.isShowing = !this.isShowing;
}
}
}
我们可以从中提取逻辑, 并创建可以复用的部分:
const toggle = {
data() {
return {
isShowing: false
}
},
methods: {
toggleShow() {
this.isShowing = !this.isShowing;
}
}
}
const Modal = {
template: '#modal',
mixins: [toggle]
};
const Tooltip = {
template: '#tooltip',
mixins: [toggle]
};
来源:Hzzly
相关文章推荐
- vue2.0 使用vue-cli搭建的项目如何在index.html里引入静态css和js
- 详解如何使用Node.js编写命令工具――以vue-cli为例
- Flask MVVM 开发(vue.js) - ajax如何同步更新地址栏history 以及使用浏览器返回按钮
- 在Vue.js中使用Mixins
- 如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
- 如何Vue-cli开始使用在Vue.js项目中启动TDD(测试驱动开发)
- 如何在 Vue.js 中使用第三方库
- 如何制作Vuejs组件,并且在项目中使用
- 如何在 Vue.js 中使用第三方库
- webpack vuejs 和 vue-router 如何使用?
- 如何Vue-cli开始使用在Vue.js项目中启动TDD(测试驱动开发)
- vue.js如何将echarts封装为组件一键使用详解
- Vue.js 2.0 中#$on与$emit如何使用之实例讲解
- Vue.js学习系列(八)---如何使用组件
- 在Vue.js中使用Mixins的方法
- vue 中 直接操作 cookie 及 如何使用工具 js-cookie
- 如何在 Vue.js 中使用第三方js库
- 如何使用Node.js编写命令工具——以vue-cli为例
- 如何使用Vuex+Vue.js构建单页应用
- 如何使用Vuex+Vue.js构建单页应用