Ember.View는 현재 W3C에 의해 당신을 위해 생성 된 태그로 제한됩니다. 그러나 고유 한 응용 프로그램 별 HTML 태그를 정의한 다음 JavaScript를 사용하여 동작을 구현하려면? 실제로 Ember.View로는 이 작업을 수행 할 수 없습니다 .
이것이 바로 컴포넌트가 할 수있는 일입니다. 사실, W3C가 현재 커스텀 엘리먼트 스펙 에서 작업하고 있다는 것은 좋은 생각입니다 .
Ember의 구성 요소 구현은 가능한 한 웹 구성 요소 사양과 밀접한 관련이 있습니다. 일단 사용자 정의 요소가 브라우저에 광범위하게 사용할 수 있습니다, 당신은 쉽게 W3C 표준에 엠버 구성 요소를 마이그레이션 할 수 잘 새로운 표준을 채택한 것과 그들이 다른 프레임 워크에 의해 사용할 수 있어야합니다.
구성 요소 구현이 웹 플랫폼의 로드맵과 일치하도록 표준 기관과 긴밀히 협력하고 있습니다.
또한 Ember.Component 는 실제로 Ember.View (하위 클래스)이지만 완전히 격리되어 있습니다. 템플릿의 속성 액세스는 보기 개체 로 이동 하고 작업은 보기 개체를 대상으로합니다. 주변 context
또는 외부에 대한 controller
모든 컨텍스트 정보가 전달 되지 않습니다. 이것은 Ember.View 의 경우가 아닙니다. 실제로 주변 컨트롤러에 액세스 할 수 있습니다. 예를 들어 뷰 내부 this.get('controller')
에서 현재보기와 연관된 컨트롤러.
그렇다면 뷰와 컴포넌트의 주요 차이점은 무엇입니까?
따라서 구성 요소와의 주요 차이점은 사용자가 자신의 태그를 만들 수있게하고 나중에 사용자 지정 요소 를 사용할 수 있는 시점에서 사용자 지정 요소 를 지원하는 다른 프레임 워크에서 해당 구성 요소를 마이그레이션 / 사용하는 것입니다. 특정 구현 사례에 따라 다소 오래된 뷰를 만듭니다.
그리고 구성 요소에 대한 뷰를 사용하거나 그 반대의 경우를 선호하는 일반적인 예는 무엇입니까?
위의 내용을 따르면 이는 사용 사례에 따라 다릅니다. 그러나 일반적으로 뷰에서 주변 컨트롤러 등에 액세스 해야하는 경우 Ember.View를 사용 하지만 뷰를 분리하고 컨텍스트를 무시 하고 작동시키는 데 필요한 정보 만 전달하려는 경우 훨씬 더 재사용이 가능한 Ember.Component를 사용하십시오 .
도움이 되길 바랍니다.
최신 정보
Road to Ember 2.0 을 게시하면 대부분의 경우 뷰 대신 컴포넌트를 사용하는 것이 좋습니다.