ember.js를 배우고 있으며 뷰와 구성 요소의 차이점을 이해하려고합니다. 재사용 가능한 구성 요소를 만드는 방법으로 두 가지를 봅니다.
Ember의 웹 사이트에서 조회 :
Ember.js의 뷰는 일반적으로 단지 다음과 같은 이유로 생성됩니다 :
당신이 사용자 이벤트의 정교한 처리가 필요합니다 – 언제
당신이 만들 – 언제 재사용 가능한 구성 요소를
구성 요소에 대한 Ember 웹 사이트에서 :
구성 요소는 JavaScript를 사용하여 동작을 구현하고 핸들 바 템플릿을 사용하여 모양을 설명하는 사용자 정의 HTML 태그입니다. 응용 프로그램 템플릿을 단순화 할 수있는 재사용 가능한 컨트롤 을 만들 수 있습니다.
그렇다면 뷰와 컴포넌트의 주요 차이점은 무엇입니까? 그리고 구성 요소에 대한 뷰를 사용하거나 그 반대의 경우를 선호하는 일반적인 예는 무엇입니까?
답변
Ember.View
Ember.View는 현재 W3C에 의해 당신을 위해 생성 된 태그로 제한됩니다. 그러나 고유 한 응용 프로그램 별 HTML 태그를 정의한 다음 JavaScript를 사용하여 동작을 구현하려면? 실제로 Ember.View로는 이 작업을 수행 할 수 없습니다 .
Ember.Component
이것이 바로 컴포넌트가 할 수있는 일입니다. 사실, W3C가 현재 커스텀 엘리먼트 스펙 에서 작업하고 있다는 것은 좋은 생각입니다 .
Ember의 구성 요소 구현은 가능한 한 웹 구성 요소 사양과 밀접한 관련이 있습니다. 일단 사용자 정의 요소가 브라우저에 광범위하게 사용할 수 있습니다, 당신은 쉽게 W3C 표준에 엠버 구성 요소를 마이그레이션 할 수 잘 새로운 표준을 채택한 것과 그들이 다른 프레임 워크에 의해 사용할 수 있어야합니다.
구성 요소 구현이 웹 플랫폼의 로드맵과 일치하도록 표준 기관과 긴밀히 협력하고 있습니다.
또한 Ember.Component 는 실제로 Ember.View (하위 클래스)이지만 완전히 격리되어 있습니다. 템플릿의 속성 액세스는 보기 개체 로 이동 하고 작업은 보기 개체를 대상으로합니다. 주변 context
또는 외부에 대한 controller
모든 컨텍스트 정보가 전달 되지 않습니다. 이것은 Ember.View 의 경우가 아닙니다. 실제로 주변 컨트롤러에 액세스 할 수 있습니다. 예를 들어 뷰 내부 this.get('controller')
에서 현재보기와 연관된 컨트롤러.
그렇다면 뷰와 컴포넌트의 주요 차이점은 무엇입니까?
따라서 구성 요소와의 주요 차이점은 사용자가 자신의 태그를 만들 수있게하고 나중에 사용자 지정 요소 를 사용할 수 있는 시점에서 사용자 지정 요소 를 지원하는 다른 프레임 워크에서 해당 구성 요소를 마이그레이션 / 사용하는 것입니다. 특정 구현 사례에 따라 다소 오래된 뷰를 만듭니다.
그리고 구성 요소에 대한 뷰를 사용하거나 그 반대의 경우를 선호하는 일반적인 예는 무엇입니까?
위의 내용을 따르면 이는 사용 사례에 따라 다릅니다. 그러나 일반적으로 뷰에서 주변 컨트롤러 등에 액세스 해야하는 경우 Ember.View를 사용 하지만 뷰를 분리하고 컨텍스트를 무시 하고 작동시키는 데 필요한 정보 만 전달하려는 경우 훨씬 더 재사용이 가능한 Ember.Component를 사용하십시오 .
도움이 되길 바랍니다.
최신 정보
Road to Ember 2.0 을 게시하면 대부분의 경우 뷰 대신 컴포넌트를 사용하는 것이 좋습니다.
답변
답은 간단합니다. 컴포넌트 사용
Yehuda Kats와 Tom Dale (Ember Core Team Members)은 2013 년 8 월에 녹화 된 교육 비디오에 따르면 사용자가 프레임 워크 개발자가 아닌 한 뷰를 사용하지 말라고 청중에게 말했습니다. 핸들 바가 많이 향상되었으며 구성 요소가 도입되었으므로 더 이상 뷰가 필요하지 않습니다. 내부적으로 뷰는 {{#if}} 및 {{outlet}}과 같은 기능을 제공하는 데 사용됩니다.
구성 요소는 브라우저에 구축 될 웹 구성 요소 표준과 매우 유사하므로 Ember 구성 요소를 편안하게 구축하는 데 많은 부수적 인 이점이 있습니다.
2014-11-27 업데이트
Ember 2.0은 컨트롤러 / 뷰 대신 경로를 입력 할 때 라우팅 가능 컴포넌트를 사용하므로 뷰 대신 컴포넌트를 사용하는 것이 더욱 중요합니다. 나중에 앱을 증명하려면 뷰에서 멀리 떨어져있는 것이 가장 좋습니다.
출처 :
- Ember 2.0으로가는 길 : https://github.com/emberjs/rfcs/pull/15
- Ember 1.x 코드 미래 보장 : https://gist.github.com/samselikoff/1d7300ce59d216fdaf97
- 보기가없고 컴포넌트 만 (Tom Dale) : https://speakerdeck.com/tomdale/ember-2-dot-0-in-practice?slide=27
답변
v2.x
현재 안정적인 릴리스 이므로 현재는 더 이상 사용되지 않습니다. Ember 2.0 API에서 뷰가 제거되고 있다고합니다 .
따라서 {{view}}
Ember 2.0에서 키워드를 사용 하면 어설 션이 트리거됩니다.
어설 션 실패 : 사용
{{view}}
또는 경로를 기반으로하는 경로가 Ember 2.0에서 제거되었습니다.
Ember 2.0에서 뷰를 사용해야하는 경우 ember-legacy-views addon을 사용할 수 있으며 버전 2.4까지 Ember와 호환됩니다 .
요약하자면, 구성 요소는 현재 (보기가 제거됨) 미래입니다. 또한 컨트롤러를 대체 할 것입니다. 라우팅 가능 구성 요소 RFC를 참조하십시오 .