Ember.jsアプリケーションを構築する方法


105

Ember JSがバージョン1.0.0に近づいた(そして到達した!)ため、Ember JSの進化に追いつくのは困難です。チュートリアルとドキュメントは消え去り、ベストプラクティスと元の開発者の意図について多くの混乱を招いています。

私の質問はまさにそれです:Ember JSのベストプラクティスは何ですか?Ember JSの使用方法を示す更新されたチュートリアルまたは作業サンプルはありますか?コードサンプルは素晴らしいでしょう!

皆さん、特にEmber JS開発者に感謝します!


7
この質問は、「EmberJSチュートリアル」のGoogle検索で上位にランクされていますが、実際にはその質問の答えにはなりません。これは、インターネット上の2つのリンクに関する質問です。タイトルに合わせてこの質問を変更することを検討しますか?最良の答えは、実際に誰かがEmberJSでアプリケーションを作成するプロセスを行ったものだと思います。
ジョージストッカー

回答:


17

新規およびベテランのEmber.js開発者の両方が活用すべき重要なプロジェクトがあります。

Ember-CLI

コマンドラインである程度の快適さは必要ですが、コミュニティ推奨のベストプラクティスを使用して、ほんの数秒で最新のEmberプロジェクトを生成できます。

Ember.jsプロジェクトをMike Grassottiの回答のように難しい方法でセットアップすることは有益ですが、本番用コードではそうするべきではありません。特にEmber-CLI、イェフダが承認したハッピーパスを示すような、強力で使いやすいプロジェクトがある場合は。


1
マットありがとう!Ember-CLIにトラフィックを転送するためにこれを受け入れられた回答にしました。
Craig Labenz 2015

数日前に初めてEmberを使い始めたばかりで、Ember-CLIの使用は非常に簡単です。唯一の欠点は、あなたが望まない/必要としないかもしれない多くの複雑さを導入することです(あなたが信頼できる種類の個人である場合、見過ごされる可能性のある複雑さはあります)。Bower、JSHint、Ember-CLI、Travis CI、EditorConfig、Gitの構成ファイル、アセット用のブロッコリー、テスト用の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
フランク・トレーシー

110

Mike Grassottiの最小実行可能Ember.jsクイックスタートガイド

このクイックスタートガイドを使用すると、数分でゼロからゼロよりわずかに多くなります。完了すると、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-1つ以上のハンドルバーテンプレートを使用して、アプリケーションのユーザーインターフェイスを説明する

デフォルトでは、emberは1つ以上のハンドルバーテンプレートのコンテンツを使用して、htmlページの本文を置き換えます。いつかこれらのテンプレートは、スプロケットまたはgrunt.jsによって組み立てられた個別の.hbsファイルに含まれるようになります。ここでは、すべてを1つのファイルに保存し、スクリプトタグを使用します。

最初に、単一の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-emberアプリケーションを初期化する

別のスクリプトブロックを追加しApp = Ember.Application.create({});てember.jsをロードし、アプリケーションを初期化するだけです。

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

基本的なemberアプリケーションを作成するために必要なことはこれだけですが、それほど興味深いものではありません。

ステップ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アプリの出発点として使用できます

次のステップ...

  • Emberガイドを読む
  • 多分Peepcodeのスクリーンキャストを買う
  • ここでスタックオーバーフローまたは残りのIRCで質問する

参考までに、私の元の答え:


私の質問は、任意のEmber.jsエキスパート、そして確かにそれぞれのチュートリアルの作成者向けです。1つのチュートリアルのデザインパターンをいつ使用し、いつ他のチュートリアルのデザインパターンを使用する必要がありますか。

これらの2つのチュートリアルは、作成時のベストプラクティスを表しています。確かに、それぞれから学べることはありますが、ember.jsは非常に高速で動いているため、悲しいことに、どちらも古くなってしまいます。2つのうち、トレックははるかに最新です。

それぞれのコンポーネントは個人の好みであり、アプリが成熟するにつれてどのコンポーネントが不可欠となるでしょうか?新しいエンバーアプリケーションを開発している場合、コードラボアプローチに従うことはお勧めしません。古すぎて便利ではありません。

Code Labの設計では、Emberはアプリケーション内に存在しているように見えますが(カスタムJSの100%であるにもかかわらず)、TrekのアプリケーションはEmber内に存在するようです。

あなたのコメントは強打です。CodeLabは、コアエンバーコンポーネントを活用し、グローバルスコープからそれらにアクセスしています。それが書かれたとき(9か月前)はこれはかなり一般的でしたが、今日の残り火アプリケーションのベストプラクティスは、Trekがやっていたことに非常に近いものです。

とはいえ、トレックのチュートリアルでさえ時代遅れになっています。必要ApplicationViewApplicationController、現在フレームワーク自体によって生成されているコンポーネント。

断然最新のリソースは、http://emberjs.com/guides/で公開されている一連のガイドです は、過去数週間にわたってゼロから作成され、最新(プレリリース)バージョンのemberを反映しています。

ここでトレックのwipプロジェクトも確認してください。https//github.com/trek/ember-todos-with-build-tools-tests-and-other-modern-conveniences

編集

@ sly7_7:ember-data https://github.com/dgeb/ember_data_exampleを使用して、他の例も示します


1
私はもともと、EmberとMVCフレームワークを強化する方法としてコードラボを書きましたが、残念ながらそれを維持する時間がありませんでした。個人的には、ほとんどのプロジェクトでAngularを使用するように切り替えたので、JavaScriptが少なくてすみ、頭を抱え込むのが少し簡単になりました。あなたのMVCの選択は完全に個人的なものなので、私があなたを揺さぶるのを許さないでください。
PeteLe 2013年

1
emberjs.com/guidesに行って、説明は非常によくできていましたが、例はそのままでは十分に実行できず、認知的前方参照に悩まされていたため、まったく新しい人が面倒でした。それらはまだ更新されていますか、それとも無料のリソースはありますか?
Walt Stoneburner 2013年

1
確かにそれらはまだ更新されています。:今日の時点ですぐに始めるために、おそらく最良の方法はでpeepcodeのスクリーンキャストをチェックアウトしているpeepcode.com/products/emberjs
マイクGrassotti

2
@MikeGrassotti EmberJSの使用を開始するためのソースコードを表示するために回答を編集する方法はありますか?EmberJSを使用して「Hello World」アプリを作成するためのステップバイステップの指示でしょうか。
ジョージストッカー

2
@MikeGrassotti ember.jsタグwikiを更新して、この質問と回答を含める必要があります
MilkyWayJoe


4

ヨーマンとそれに付属する燃えさし発電機を使用することを強くお勧めします。箱から出して、アプリの開発、テスト、本番用の準備に必要なすべてのツールを入手できます。追加のボーナスとして、ビューテンプレートを複数のファイルに分割し、メンテナンス可能なコードベースの作成を容易にするインテリジェントなディレクトリ構造から始めることができます。

起動して約5分で実行するためのチュートリアルを作成しました。node.jsをインストールして、ここに従ってください




0

私は木炭ヨーマンのアプローチを好みます。これには、次のようなたくさんのものが含まれています。

  • 「モジュール」アプローチを使用した素晴らしいフォルダアーキテクチャ。
  • 中性
  • ライブリロード
  • 縮小する
  • 醜い
  • jshint

もっと。

設定は非常に簡単で、実行yo charcoalしてアプリを作成してyo charcoal:module myModuleから新しいモジュールを追加するだけです。

詳細はこちら:https : //github.com/thomasboyt/charcoal


0

エンブレムテンプレートエンジンを備えた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

コミュニティの繁栄を助けるだけでなく、標準的なWebサイトを簡単に構築する方法を人々が学ぶのを助けることにも熱心です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.