2016-07-27 5 views
0

내가 엠버 애드온 프로젝트에 ember g component foo-bar를 실행하면 (의이 addon-project을 가정 해 봅시다)는 :애드온에서 구성 요소를 생성 할 때 ember cli가 hbs 파일에 대한 응용 프로그램 브리지를 생성하지 않는 이유는 무엇입니까? 그것은 다음과 같은 생성

// addon-project/addon/components/foo-bar.js 
import Ember from 'ember'; 
import layout from '../templates/components/foo-bar'; 

export default Ember.Component.extend({ 
    layout 
} 

// addon-project/addon/templates/components/foo-bar.hbs 
{{yield}} 

// addon-project/app/components/foo-bar.js 
export { default } from 'addon-project/components/foo-bar'; 

나는 그것이 구성 요소 서식을 내보낼 addon-project/app/templates/components/foo-bar.js을 생성하지만, 명시 적으로 layout를 사용하여 템플릿을 연결하지 않는 것으로 나타났습니다.

addon-project/app/templates/components/foo-bar.js을 생성하지 않습니까? 이 행동에 대한 이유가 있습니까?

대신 절대 경로의 상대 경로를 사용하여 가져온 layout (즉 import layout from 'addon-project/templates/components/foo-bar

답변

0

먼저 왜 또? -? 당신이 사용합니까 ember-cli의 버전 청사진이 나를 위해 버전

에 따라 그 다음에 무엇을

vvs ~/r/e/test-addon> ember -v 
ember-cli: 2.6.3 
node: 4.4.7 
os: darwin x64 
vvs ~/r/e/test-addon> ember g component test-component 
Could not start watchman; falling back to NodeWatcher for file system events. 
Visit http://ember-cli.com/user-guide/#watchman for more info. 
installing component 
    create addon/components/test-component.js 
    create addon/templates/components/test-component.hbs 
installing component-test 
    create tests/integration/components/test-component-test.js 
installing component-addon 
    create app/components/test-component.js 

그래서 그것은뿐만 아니라

다음 템플릿을 생성 -이 관련 사용 addon 네임 스페이스에 의존하는 장소의 수를 줄이기위한 임포트 레이아웃 경로 (나중에 정의 된 네임 스페이스를 변경하려면 index.js) -

오. 구성 요소 사용 레이아웃에서 템플릿 브릿지 원인을 생성하지 않았습니다. 템플릿을 정의하지 않고 구성 요소를 확장 할 수 있습니다 (원래 구성 요소를 확장하고 논리를 추가/변경하고 생성 템플릿을 건너 뛸 수 있음) 레이아웃 대신 템플리트를 사용하려면 템플릿을 정의하거나 (동일한 레이아웃을 명시 적으로 사용해야 함) 수동으로 사용해야합니다

+0

2.4.3과 2.7.0을 모두 테스트했습니다. 사실 그것은 당신을 위해 템플릿을위한 브리지 파일도 생성하지 않았습니다. 구성 요소, 템플리트, 구성 요소 테스트 및 구성 요소에 대한 브릿지가 생성되었지만 템플리트에 대한 브릿지는 생성되지 않았습니다. 당신의 경우에'test-addon/app/templates/components/test-component.js' 파일을 생성하지 않은 이유는 무엇입니까? – lordofthefobs

+0

: addon 네임 스페이스에 의존하지 않습니다 ... 그 논리는 이해할 수 없습니다. 나를. 1) 애드온 네임 스페이스를 변경하는 이유는 무엇입니까? 그것은 당신이해야 할 일이거나 그렇게해야하는 것처럼 보이지 않습니다. 그리고해야만하는 경우에도, 당신은 단지 "모든 것을 찾아서 교체"할 수 있습니다. 2) 상대 경로를 사용하는 것이 깨지기 쉽습니다. 조직의 여러 계층이 있다면 "../../../../"로 끝납니다. 그리고 파일을 돌아 다니면 ../ 의 올바른 번호가 있는지 확인해야합니다. 3) EmberCLI에서 상대 경로를 사용하는 유일한 장소입니다. Ember Data조차도 상대 경로가 아닌 내부적으로 'ember-data'네임 스페이스를 사용합니다. – lordofthefobs

+0

오. 구성 요소 사용 레이아웃에서 템플릿 브릿지 원인을 생성하지 않았습니다. 템플릿을 정의하지 않고 구성 요소를 확장 할 수 있습니다 (원래 구성 요소를 확장하고 논리를 추가/변경하고 생성 템플릿을 건너 뛸 수 있음) 레이아웃 대신 템플리트를 사용하려면 템플릿을 정의하거나 (동일한 레이아웃을 명시 적으로 사용해야 함) 수동으로 사용해야합니다 –