vuejs-kr / vuejs-kr.github.io

vuejs 한국어 사용자 모임 홈페이지 저장소 입니다.
https://vuejs-kr.github.io
MIT License
68 stars 16 forks source link

vue.js 컴포넌트와 플러그인 관하여 궁금합니다. #107

Open hskim1226 opened 6 years ago

hskim1226 commented 6 years ago

만약 컴포넌트와 플러그인 이 다른거라면

컴포넌트와 플러그인의 정확한 차이점이 무엇일까요 ..? 사용측면에서 , 어찌 해야할지 잘 모르겠습니다. 답변 주실수 있을까요 ?

ChangJoo-Park commented 6 years ago

확인했습니다 조금 답변하는데 시간이 걸릴거같은데 괜찮으신가요?

슬랙에 오시면 어느분이든 답변 주실 수 있을 거에요 슬랙에서 질문하시면 더 빠르게 답변을 받으실 것 같아요

ChangJoo-Park commented 6 years ago

@hskim1226 님, Vue.use는 플러그인을 추가할때 사용하는데요, 플러그인이 컴포넌트일 수도 있고 아닐수도 있습니다, 믹스인, 메소드 등만 제공하는 플러그인도 있거든요 플러그인이 컴포넌트보다 더 상위레벨이라고 보시면 됩니다

Vue를 처음 사용하고 계신다면 우선은 컴포넌트가 어떤 것인지 먼저 확인해보시면 어떨까요? 컴포넌트 사용법에 익숙해지시면 플러그인이 필요하겠구나 하는 시기가 올 거라 생각해요

hskim1226 commented 6 years ago

답변 감사합니다.

  1. 플러그인이 , 더 상위레벨이라고 말씀하셨는데요 .상위레벨이라는것이 , 확장의 개념인가요 ? 상속의 개념인가요 ?

  2. 현재 컴포넌트를 , html(화면구성)이 포함된 , 기능 단위로 만들어서 사용하고 있었는데요 . 내가 만든 기능 (컴포넌트)를 다른 프로젝트에서 사용할수 있게 하는것이 , 플러그인 인가요 ?

  3. 현재 ,어떤 함수를 여러 vue인스턴스에서 사용하고 싶어서 .js파일에 전역함수를 선언하고 , 각각의 vue인스턴스에서 아래와 같은 방식으로 다시 불러서 사용하고 있었습니다.

    function 전역(type){
    return "전역값"+type;
    }

    vue1.js

    getCommcode: function (type) {
            return 전역(type)
    }

    vue2.js

    getCommcode: function (type) {
            return 전역(type)
    }

    html에서 전역함수에 직접 접근이 되지 않아서 ,위와 같이 간접적으로 {{getCommcode(type)}} 으로 선언해서 사용하였습니다. 전역 함수를 사용하고 싶은경우& 직접 접근하고 싶은경우 , 권장하는 다른 방법이 있을까요 ?

jicjjang commented 6 years ago
  1. 확장과 상속은 근본적인 개념이 같아보여서 확답은 못드리겠지만, Vue.use에 있는 말그대로 사용 하기위해 받는 것입니다. 플러그인이란 단어의 의미 자체가 extends, implements를 위한게 아니라 만들어진 것을 사용한다는거죠

  2. 하나의 컴포넌트만 외부로 내보내는 것이 아니라 하나의 기능(모듈)을 완성하고, 밖으로 내보내어 사용하는 것이 plugin 이라고 생각하시면 됩니다.(물론 컴포넌트들을 최종으로 모아놓은것도 컴포넌트긴 하지만... 이를 말씀하시는 건 아닌 것 같아서요^^;) 예를 들어 캘린더를 플러그인으로 만든다던지, 페이지네이션 부분을 모듈로 만든다던지... 이런거죠

  3. 이건 LifeCycle 부분을 조금 더 알아보셔야 할 것 같습니다. 전역으로 선언을 하신 js파일이 불려지는 로딩시간 이전에 vue파일이 로드된다면 에러가 나오겠죠?

개인적인 생각으로 전역으로의 권장(가장 쉽고 빠르게 가능...?)은 vuex가 아닐까 합니다. vuex 말고도 해결책들은 더 있을겁니다.