programing

Vue 컴포넌트로의 Particles.js

shortcode 2022. 7. 19. 22:04
반응형

Vue 컴포넌트로의 Particles.js

다음 예에서 particles.http://https://codepen.io/MichaelVanDenBerg/pen/WpXGRm 를 Vue.js 컴포넌트에 적용하려고 합니다.

단, 다음 코드를 사용하면 콘솔에 다음 오류 메시지가 나타납니다.

[Vue warn] :마운트된 후크 오류: "TypeError: this.particles is not function"

아래 코드로 수정하려면 어떻게 해야 하나요?

템플릿:

</template>
    <div>
        <div id="particles-js"></div>
    </div>
</template>

스크립트:

<script>
import particles from 'particles.js'
export default {
    mounted() {
        this.initParticles()
    },
    methods: {
        initParticles () {
            particles("particles-js", {
                "particles": {
                    "number": {
                        "value": 80,
                        "density": {
                            "enable": true,
                            "value_area": 700
                        }
                    },
                    "color": {
                        "value": "#ffffff"
                    },
                    "shape": {
                        "type": "circle",
                        "stroke": {
                            "width": 0,
                            "color": "#000000"
                        },
                        "polygon": {
                            "nb_sides": 5
                        },
                    },
                    "opacity": {
                        "value": 0.5,
                        "random": false,
                        "anim": {
                            "enable": false,
                            "speed": 1,
                            "opacity_min": 0.1,
                            "sync": false
                        }
                    },
                    "size": {
                        "value": 3,
                        "random": true,
                        "anim": {
                            "enable": false,
                            "speed": 40,
                            "size_min": 0.1,
                            "sync": false
                        }
                    },
                    "line_linked": {
                        "enable": true,
                        "distance": 150,
                        "color": "#ffffff",
                        "opacity": 0.4,
                        "width": 1
                    },
                    "move": {
                        "enable": true,
                        "speed": 6,
                        "direction": "none",
                        "random": false,
                        "straight": false,
                        "out_mode": "out",
                        "bounce": false,
                        "attract": {
                            "enable": false,
                            "rotateX": 600,
                            "rotateY": 1200
                        }
                    }
                },
                "interactivity": {
                    "detect_on": "canvas",
                    "events": {
                        "onhover": {
                                "enable": true,
                                "mode": "grab"
                        },
                        "onclick": {
                            "enable": true,
                            "mode": "push"
                        },
                        "resize": true
                    },
                    "modes": {
                        "grab": {
                            "distance": 140,
                            "line_linked": {
                                "opacity": 1
                            }
                        },
                        "bubble": {
                            "distance": 400,
                            "size": 40,
                            "duration": 2,
                            "opacity": 8,
                            "speed": 3
                        },
                        "repulse": {
                            "distance": 200,
                            "duration": 0.4
                        },
                        "push": {
                            "particles_nb": 4
                        },
                        "remove": {
                            "particles_nb": 2
                        }
                    }
                },
                "retina_detect": true
            })
        }
    }
}
</script>

CSS:

<style scoped>
#particles-js {
    position: absolute;
    width: 100%;
    height: 100%;
    background: #00356B;
}
</style>

패키지는 아무것도 내보내지 않고 를 설정합니다.

이 패키지를 사용하려면 스크립트로 Import한 후 호출하기만 하면 됩니다.particlesJS():

import 'particles.js'
export default {
  // ...
  methods: {
    initParticles() {
      window.particlesJS('particles-js', {/* ... */})
    }
  }
}

데모

언급URL : https://stackoverflow.com/questions/50341821/particles-js-into-vue-component

반응형