Vue视差插件或组件

时间:2019-05-27 14:19:28

标签: javascript vue.js plugins vue-component parallax

背景

请考虑以下组件;

<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)我只希望为自己的使用编写代码大小写,即没有冗余代码。

0 个答案:

没有答案