Ember.js 애플리케이션을 설계하는 방법


105

Ember JS가 버전 1.0.0에 접근 (및 도달!)함에 따라 진화하는 Ember JS를 따라 잡기가 어려웠습니다. 튜토리얼과 문서가 왔다가 사라져 모범 사례와 원래 개발자의 의도에 대해 많은 혼란을 겪었습니다.

내 질문은 정확히 다음과 같습니다. Ember JS의 모범 사례는 무엇입니까? Ember JS가 어떻게 사용되는지 보여주는 업데이트 된 튜토리얼이나 작업 샘플이 있습니까? 코드 샘플이 좋을 것입니다!

모든 분들, 특히 Ember JS 개발자에게 감사드립니다!


7
이 질문은 'EmberJS tutorial'에 대한 Google 검색에서 최상위 순위에 있지만 실제로 그 질문에 대한 답변은 아닙니다. 이것은 인터넷의 2 개의 링크에 대한 질문입니다. 제목에 맞게이 질문을 변경 하시겠습니까? 가장 좋은 대답은 EmberJS로 응용 프로그램을 만드는 과정을 실제로 누군가를 데려 간 것입니다.
조지 스토커

답변:


17

신규 Ember.js 개발자와 베테랑 Ember.js 개발자가 모두 활용해야하는 중요한 프로젝트가 있습니다.

Ember-CLI

명령 줄에 약간의 편안함이 필요하지만 커뮤니티 권장 모범 사례를 사용하여 몇 초 안에 최신 Ember 프로젝트를 생성 할 수 있습니다.

Mike Grassotti의 답변 에서처럼 Ember.js 프로젝트를 어려운 방식으로 설정하는 것이 유익하지만 프로덕션 코드에는 그렇게해서는 안됩니다. 특히 Ember-CLI예후 다가 승인 한 행복한 길 을 보여줄 수있는 강력하고 사용하기 쉬운 프로젝트가있을 때 특히 그렇습니다 .


1
감사합니다 Matt! Ember-CLI로 트래픽을 전달하는 데 허용되는 답변으로 만들었습니다.
Craig Labenz 2015

며칠 전에 처음으로 Ember를 사용하기 시작했으며 Ember-CLI는 시작하고 사용하기가 매우 쉽습니다. 유일한 단점은 원치 않거나 필요하지 않을 수있는 많은 복잡성을 도입한다는 것입니다 (신뢰하는 개인의 경우 간과 할 수있는 복잡성). Bower, JSHint, Ember-CLI, Travis CI, EditorConfig 및 Git 구성 파일, 자산 용 Broccoli 및 테스트 용 PhantomJS와 같은 기타 파일 ...
JKillian

페어 포인트 @JKillian. 이러한 이유로 Ember의 학습 곡선에 대한 우려가 있다는 것을 알고 있습니다. Ember-cli는 약간의 복잡성 (Ember-data 및 Broccoli)을 도입하지만 공급 업체 요구 사항과 프로젝트 구조화에 대한 상당한 혼란을 제거합니다. 그래서 소금 한 알이 있습니다.
Matt Jensen

1
Ember CLI 행복한 길에 완전히 동의하십시오! 아래의 Mike Grassotti의 빠른 시작 가이드는 오래되지 않았다면 완벽한 "다음 단계"가 될 것입니다. Ember 2.0 앱을 빌드하려는 사람들에게 가장 좋은 방법은 모델, 경로, 서비스, 구성 요소 등과 같은 핵심 개념을 이해하는 것입니다. Ember 문서는 훌륭한 리소스입니다. 모든 개념을 연결하는 하나의 업데이트 된 가이드를 보지 못했습니다 (샘플 앱으로는 훨씬 적음). 저는 이것을 작성하기로 결정했습니다. emberigniter.com/5-essential-ember-2.0-concepts
Frank Treacy

110

Mike Grassotti의 최소 실행 가능한 Ember.js 빠른 시작 가이드

이 빠른 시작 가이드는 몇 분 안에 0 에서 0보다 약간 높은 수준으로 안내합니다 . 완료되면 ember.js가 실제로 작동하고 더 많은 것을 배울 수있을만큼 충분히 관심을 가질 것이라는 확신을 갖게 될 것입니다.

경고 :이 가이드를 시도하지 말고 불씨가 "이 빠른 시작 가이드를 jQuery 또는 Fortran에서 더 잘 작성할 수 있습니다."라고 생각하지 마십시오. 나는 당신을 불씨 나 다른 것에 팔려고하는 것이 아닙니다.이 가이드는 단지 hello-world에 불과합니다.

0 단계-jsFiddle 확인

이 jsFiddle 에는이 답변의 모든 코드가 있습니다.

1 단계-ember.js 및 기타 필수 라이브러리 포함

Ember.js에는 jQuery와 핸들 바가 모두 필요합니다. 해당 라이브러리가 ember.js 전에로드되었는지 확인하십시오.

<script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script>
<script type='text/javascript' src="http://cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0-rc.3/handlebars.js"></script>
<script type='text/javascript' src="http://cdnjs.cloudflare.com/ajax/libs/ember.js/1.0.0-rc.1/ember.js"></script>

2 단계-하나 이상의 핸들 바 템플릿을 사용하여 애플리케이션의 사용자 인터페이스 설명

기본적으로 ember는 하나 이상의 handlbars 템플릿의 콘텐츠를 사용하여 HTML 페이지의 본문을 대체합니다. 언젠가 이러한 템플릿은 스프로킷 또는 grunt.js로 조립 된 별도의 .hbs 파일에있을 것입니다. 지금은 모든 것을 하나의 파일에 보관하고 스크립트 태그를 사용합니다.

먼저 단일 application템플릿을 추가해 보겠습니다 .

<script type="text/x-handlebars" data-template-name="application">
  <div class="container">
    <h1>Ember.js is easy?<small> Minimum Viable Ember.js QuickStart Guide</small></h1>
    <p>{{message}}</p>
  </div>
</script>

3 단계-엠버 애플리케이션 초기화

App = Ember.Application.create({});ember.js를로드하고 애플리케이션을 초기화하려면 다른 스크립트 블록을 추가 하기 만하면됩니다.

<script type='text/javascript'>
  App = Ember.Application.create({});
</script>

이것이 기본적인 불씨 응용 프로그램을 만드는 데 필요한 전부이지만 그다지 흥미롭지는 않습니다.

4 단계 : 컨트롤러 추가

Ember는 컨트롤러의 컨텍스트에서 각 핸들 바 템플릿을 평가합니다. 따라서 application템플릿에는 일치하는 ApplicationController. Ember 생성은 사용자가 정의하지 않으면 자동으로 생성되지만 여기에서는 메시지 속성을 추가하도록 사용자 정의 해 보겠습니다.

<script type='text/javascript'>
App.ApplicationController = Ember.Controller.extend({
    message: 'This is the application template' 
});
</script>

5 단계 : 경로 및 추가 컨트롤러 및 템플릿 정의

Ember 라우터를 사용하면 템플릿 / 컨트롤러를 애플리케이션에 쉽게 결합 할 수 있습니다.

<script type='text/javascript'>
  App.Router.map(function() {
    this.route("index", { path: "/" });
    this.route("list", { path: "/list" });
  });

  App.IndexController = Ember.Controller.extend({
    message: 'Hello! See how index.hbs is evaluated in the context of IndexController' 
  });

  App.ListRoute = Ember.Route.extend({
    setupController: function(controller) {
      controller.set('content', ['angular.js', 'backbone.js', 'ember.js']);
    }
  });

</script>

이 작업을 수행하기 위해 {{outlet}}도우미 를 추가하여 응용 프로그램 템플릿을 수정합니다 . Ember 라우터는 사용자의 경로에 따라 적절한 템플릿을 콘센트에 렌더링합니다. 또한 {{linkTo}}도우미를 사용하여 탐색 링크를 추가합니다.

    <script type="text/x-handlebars" data-template-name="application">
      <div class="container">
          <h1>Ember.js is easy?<small> Minimum Viable Ember.js QuickStart Guide</small></h1>
        <p>{{message}}</p>
        <div class="row">
          {{#linkTo index class="span3 btn btn-large btn-block"}}Home{{/linkTo}}
          {{#linkTo list class="span3 btn btn-large btn-block"}}List{{/linkTo}}
        </div>
        {{outlet}}
      </div>
    </script>

    <script type="text/x-handlebars" data-template-name="list">
      <h3 class="demo-panel-title">This is the list template</h3>
      <ul>
      {{#each item in content}}
          <li>{{item}}</li>
      {{/each}}
       </ul>
    </script>

    <script type="text/x-handlebars" data-template-name="index">
      <h3 class="demo-panel-title">This is the index template</h3>
      <p>{{message}}</p>
    </script>

끝난!

이 응용 프로그램의 작동 예는 여기에서 볼 수 있습니다 .

이 jsFiddle 을 자신의 엠버 앱의 시작점으로 사용할 수 있습니다.

다음 단계...

  • Ember 가이드 읽기
  • Peepcode 스크린 캐스트를 구매할 수도 있습니다.
  • 여기 Stack Overflow 또는 ember IRC에서 질문하십시오.

참고로 내 원래 답변 :


내 질문은 Ember.js 전문가, 그리고 확실히 각 튜토리얼 작성자를위한 것입니다. 언제 한 튜토리얼의 디자인 패턴을 사용해야하고 다른 튜토리얼의 디자인 패턴을 언제 사용해야합니까?

이 두 자습서는 작성 당시의 모범 사례를 나타냅니다. 확실히 각각에서 배울 수있는 것이 있지만, 둘 다 ember.js가 매우 빠르게 움직이고 있기 때문에 슬프게도 구식이 될 운명입니다. 두 가지 중에서 Trek 's는 훨씬 더 최신입니다.

각각의 구성 요소는 개인 취향이며 내 앱이 성숙함에 따라 필수적인 구성 요소는 무엇입니까? 새로운 엠버 애플리케이션을 개발하는 경우 Code Lab 접근 방식을 따르지 않는 것이 좋습니다. 유용하기에는 너무 오래되었습니다.

Code Lab의 디자인에서 Ember는 (그의 사용자 정의 JS의 100 % 임에도 불구하고) 응용 프로그램 내에서 기존에 더 가까운 것처럼 보이지만 Trek의 응용 프로그램은 Ember 내에서 더 많이 살고있는 것 같습니다.

귀하의 의견은 뱅온입니다. CodeLab은 핵심 ember 구성 요소를 활용하고 전역 범위에서 액세스합니다. 그것이 작성되었을 때 (9 개월 전) 이것은 매우 일반적 이었지만 오늘날에는 불씨 응용 프로그램을 작성하는 모범 사례가 Trek이하는 일에 훨씬 더 가깝습니다.

즉, Trek의 튜토리얼도 구식이되고 있습니다. 필요 ApplicationView했고 ApplicationController이제 프레임 워크 자체에서 생성 된 구성 요소입니다 .

지금까지 가장 최근의 리소스는 http://emberjs.com/guides/에 게시 된 가이드 세트입니다.이 가이드 는 지난 몇 주 동안 처음부터 작성되었으며 ember의 최신 (출시 전) 버전을 반영합니다.

https://github.com/trek/ember-todos-with-build-tools-tests-and-other-modern-conveniences 에서 trek의 wip 프로젝트도 확인합니다.

수정 :

@ sly7_7 : ember-data https://github.com/dgeb/ember_data_example을 사용하여 다른 예도 제공합니다.


1
저는 원래 Ember 및 MVC 프레임 워크에 대한 사람들을 끌어들이는 방법으로 Code Lab을 작성했지만, 불행히도 그 이후로 계속 유지할 시간이 없었고 다른 사람들이 더 나은 리소스를 만들만큼 충분히 변경된 것 같습니다. 개인적으로 저는 이후 대부분의 프로젝트에서 Angular를 사용하도록 전환했습니다. JavaScript가 덜 필요하고 머리를 감싸는 것이 조금 더 쉽습니다. 당신의 MVC 선택은 완전히 개인적인 것이므로 내가 당신을 흔들지 않도록하십시오.
PeteLe

1
emberjs.com/guides이동 하여 설명이 매우 잘 수행되었지만 예제가있는 그대로 실행될 수있을만큼 완전하지 않았으며 완전히 새로운 사람에게 문제가되는인지 적 전방 참조로 어려움을 겪었습니다. 여전히 업데이트되고 있습니까? 아니면 무료 리소스가 있습니까?
Walt Stoneburner 2013 년

1
확실히 그들은 여전히 ​​업데이트되고 있습니다. 아마 가장 좋은 방법은 빨리 시작하는 오늘로 peepcode의 스크린 캐스트에서 체크 아웃된다 peepcode.com/products/emberjs를
마이크 Grassotti

2
@MikeGrassotti EmberJS를 시작하기위한 소스 코드를 표시하기 위해 답변을 편집 할 수있는 방법이 있습니까? EmberJS로 "Hello World"앱을 만드는 방법에 대한 단계별 지침이 있습니까?
조지 스토커

2
@MikeGrassotti 이 질문과 답변을 포함하도록 ember.js 태그 위키를 업데이트해야합니다
MilkyWayJoe


4

Yeoman 과 그에 수반되는 불씨 생성기를 사용하는 것이 좋습니다 . 즉시 앱을 개발, 테스트 및 준비하는 데 필요한 모든 도구를 사용할 수 있습니다. 추가 보너스로, 뷰 템플릿을 여러 파일로 분할하고 유지 관리 가능한 코드베이스를 쉽게 만들 수있는 지능형 디렉토리 구조로 시작할 수 있습니다.

약 5 분 만에 시작하고 실행하는 방법에 대한 자습서를 작성했습니다. node.js를 설치하고 여기를 따르십시오 .



1

또한 Tuts + Premium에서 Let 's Learn Ember 라는 제목의이 무료 튜토리얼을 살펴보십시오 . 그것의 free courses시리즈 에서 그것의 무료 입니다. Tuts 사람들이 부르는이 과정은 이해하기 쉬운 14 개의 장으로 나뉩니다.

이게 도움이 되길 바란다.

문안 인사,


0

나는 숯 여만 접근을 선호한다. 다음을 포함하여 즉시 사용할 수있는 다양한 기능을 제공합니다.

  • '모듈'접근 방식을 사용하는 멋진 폴더 아키텍처.
  • 중성
  • 라이브 재 장전
  • 작게 하다
  • 추하게 하다
  • jshint

그리고 더.

설정이 매우 쉽습니다. 실행 yo charcoal하여 앱을 만든 다음 yo charcoal:module myModule새 모듈을 추가하면됩니다.

자세한 정보 : https://github.com/thomasboyt/charcoal


0

Emblem 템플릿 엔진과 함께 Ember-Data와 함께 최신 EmberJS를 사용하려면 스타터 키트를 방금 만들었습니다. 모두 Middleman으로 포장되어 있으므로 CoffeeScript로 개발할 수 있습니다. 내 GitHub의 모든 것 : http://goo.gl/a7kz6y



0

저는 Ember 이전부터 시작하여 실제 상황에 대한 진지한 사용 사례에서 Ember를 분노로 사용하도록 구축하는 일련의 비디오를 만들기 시작했습니다.

이 히트작을 보는 데 관심이 있으시다면 (관심이 있다면 결국 공개하게되어 기쁩니다) 제가 작성한 게시물로 이동하여 "좋아요"를 누르십시오 (또는 여기에 댓글을 달아주세요. 나는 추측한다) :

http://discuss.emberjs.com/t/making-ember-easier-to-approach-aka-crazy-screencasts-videos-that-will-stick-in-your-mind-for-learning-ember/5284

저는 커뮤니티가 번창하도록 도울뿐만 아니라 사람들이 쉽게 표준 웹 사이트를 구축하는 방법을 배우도록 돕고 싶습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.