请考虑以下组件;
<template>
<div>
<slot></slot>
</div>
</template>
<script>
export default {
created () {
// Register the scroll event
window.addEventListener('scroll', this.handleScroll);
},
methods: {
/**
* Handle the window scroll event.
*
* @return void
*/
handleScroll () {
// Do something...
}
}
}
</script>
使用上面的示例,非常简单,如果我在页面上多次使用此组件,它将为滚动事件注册多个事件侦听器(每次使用该组件一个),这无疑是无效的。
这使我想到也许Vue插件更合适,因为我相信我可以注册一个事件侦听器,该事件侦听器可以遍历指令/组件的每次出现并应用任何必要的更改。
但是,对于使用插件,我有一些保留意见,因此,我想在此处发布这些内容,以便有人希望对我有所帮助,并帮助我做出是否应该使用组件或组件的决定。插件。
这些是我对使用插件的保留意见:
我打算使用插件的方式就像这样,即自定义指令:
<div v-parallax="0.2"></div>
这可能无关紧要,但是通过应用此指令,该元素将被添加到items
数组中,并且随着用户滚动/如果元素在视口中,则调整大小。
根据上述所有信息,您是否会为此功能推荐Vue插件或Vue组件?
注意-我知道Vue已经存在视差插件,但是a)它们不能按我需要的方式工作,b)我只希望为自己的使用编写代码大小写,即没有冗余代码。