关于dart:Dart的混入概念和Vue3的混入概念

117次阅读

共计 1462 个字符,预计需要花费 4 分钟才能阅读完成。

Dart

mixin 即 mix in,中文翻译过去是“混入”,就是在类中混入其余性能

在 Dart 官网中的定义是 Mixins are a way of reusing code in multiple class hierarchies. 翻译过去就是“Mixins 是一种在多类层次结构中复用代码的一种形式”

Dart 的 mixins 应用

首先用 mixin 关键字定义一个 mixin 类
对于 mixin 关键字能够这样了解,定义类用 class,定义接口用 interface,而定义 Mixins 用的就是 mixin A {
void a() {print(‘A’);}
}
而后用 with 关键字混入一个 mixin 类
对于 with 关键字也能够这样了解,集成类用 extends,实现接口用 implements,而混入 Minxins 用的就是 with
void main() {
Mix m = Mix();
m.a();
}

多混入

Mixins 反对多混入,这样就能够应用多个 Mixin 类的性能
如下的 Mix 类混入了 A、B 两个类
mixin A {
void a() {
print(‘A’);
}
}
mixin B {
void b() {
print(‘B’);
}
}
class Mix with A, B {
// 混入多个类
}
void main() {
Mix m = Mix();
m.a();
m.b();
}

注意事项

  1. Mixins 除了继承 Object 外,不能够继承任何其余类
  2. Mixins 不能够定义构造方法
  3. 办法笼罩,后盖前





vue3 的混入

混入 (mixins)定义了一部分可复用的办法或者计算属性。混入对象能够蕴含任意组件选项。当组件应用混入对象时,所有混入对象的选项将被混入该组件自身的选项。

const myMixin = {created() {this.hello()
  },
  methods: {hello() {console.log('wdada!')
   }
  }
}
 
// 定义一个利用,应用混入
const app = Vue.createApp({mixins: [myMixin]
})
 
app.mount('#app') 

混入合并

当组件和混入对象含有同名选项时,这些选项将以失当的形式混合。
比方,数据对象在外部会进行浅合并 (一层属性深度),在和组件的数据发生冲突时以组件数据优先。
以下实例中,Vue 实例与混入对象蕴含了雷同的办法。从输入后果能够看出两个选项合并了。

<div id = "app"></div>
<script type = "text/javascript">
const myMixin = {data() {
    return {
      message: 'hello',
      foo: 'runoob'
    }
  }
}
 
const app = Vue.createApp({mixins: [myMixin],
  data() {
    return {
      message: 'goodbye',
      bar: 'def'
    }
  },
  created() {document.write(JSON.stringify(this.$data)) 
  }

输入结果显示:{“message:goodbaye,”foo”: “runoob”,”bar”:”def”}

同名钩子

同名钩子函数将合并为一个数组,因而都将被调用。另外,mixin 对象的钩子将在组件本身钩子之前调用。

const myMixin = {created() {console.log('mixin 对象的钩子被调用')
  }
}

const app = Vue.createApp({mixins: [myMixin],
  created() {console.log('组件钩子被调用')
  }
})

mixins 的钩子函数比组件调用早

后果

这两者区别较大,为了不便,所以记在一起

正文完
 0