2014-12-22 4 views
2

ember.js 응용 프로그램의 구조에 익숙해졌으며 라우트, 컨트롤러, 모델, 템플릿 및 도우미의 목적을 이해하고 있다고 생각합니다.ember-cli 응용 프로그램에 복잡한 기능을 넣을 위치는 어디입니까?

내가 이해할 수없는 것은 복잡한 기능을 넣는 부분입니다. 컨트롤러에있는 computeSuggestions이라는 액션이 ​​있다고 가정 해 보겠습니다. 이 하나의 행동은 매우 크고 복잡하며 자체 모듈에 있다면 테스트하기가 더 쉬워 질 수 있습니다.이 모듈은 순수한 함수로 정의 될 수 있습니다.

이 문제를 처리하는 일반적인 방법은 무엇입니까? 필자는 JavaScript import 문에 익숙하지 않지만 Java 또는 Python만큼 쉽지는 않다는 것을 알고 있습니다. 나는 또한 디렉토리 구조가 어디에서 그러한 기능을위한 정상적인 장소가 될지 확신 할 수 없다.

+0

나는 단순한'.on ('click','function ... '을 넣을 곳이 혼란 스럽다. – sheriffderek

+0

Ember는 배우기가 어렵다. 나는 아직 초보자이지만 커뮤니티는 매우 도움이된다. SO 또는 http://discuss.emberjs.com/에 대한 질문입니다. –

답변

2

http://www.ember-cli.com/#using-modules의 문서를 기반으로하면/app/utils 폴더에 가장 적합한 장소로 보입니다.

+1

이것은 올바른 ember-cli 접근법입니다. 그리고 나는'ember g util my-function'이 나를 위해 모듈을 생성한다는 것을 알았습니다. –

1
I, 당신은 여기에 대한 자세한 내용을보실 수 있습니다이 기능을 엠버 유지 mixin을 사용으로 보일 것이다

: http://emberjs.com/api/classes/Ember.Mixin.html

예 :

app/mixins/compute-suggestions-controller.js :

export default Ember.Mixin.create({ 
    actions: { 
     computeSuggestions: function(modelOrSomething) { 
      // Do your complicated action here 
     } 
    } 
}); 

app/controllers/your-controller.js :

import ComputeSuggestionsControllerMixin from '../mixins/compute-suggestions-controller'; 

export default Ember.Controller.extend(ComputeSuggestionsControllerMixin, { 
    // Rest of controller definition here 
}); 

동작 컨트롤러가 mixin으로 확장 되었기 때문에 computeSuggestions을 컨트롤러에 대한 작업으로 사용할 수 있습니다.

믹스 인을 사용하는 것보다 일반적인 솔루션을 찾고 있다면 ES6 모듈 패턴을 자유롭게 사용하여 필요한 모듈이나 서비스를 가져올 수 있습니다. 보통 내 물건을 app/utils/module-name.js에 넣고 import utilName from '../utils/util-name.js';을 통해 필요한 곳으로 가져옵니다.

희망 하시겠습니까?

관련 문제