jQuery フロントエンドを備えた Rails 4 アプリがあり、徐々に Ember を採用しています。これはおそらく正解が 1 つもない未解決の問題なので、いくつかのガイダンスを提供します。
まず、Ember と Rails は異なる問題を解決するということから始めましょう。Ember は Rails の代替品ではなく、Rails が 1 つのコンポーネントであり、Ember が別のコンポーネントである、より大きなシステムの一部であり、データベースが別の部分であるのと同じです。とはいえ、Ember を使用すると、Rails で特定の部分を実行する必要性が簡素化され、おそらく除去されるため、重複する部分があります。Rails を削除する場合は、おそらく同等のものに置き換える必要があります。
ここで、いくつかのアイデアまたはアプローチ:
- サイド アプリ/ページ。Ember でエンド ツー エンドで実行できる、メイン アプリとは別の新しい小さな機能領域を見つけます。たとえば、e コマース サイトで、注文履歴を確認します。別のことを行うと、既存の機能をすべて書き直したり、何かを壊す危険を冒したりすることなく、いくつかの利点を得ることができます。また、レガシー コードを気にせずにゼロから始めることもできます。
- すべて書き直してください。明らかに欠点はここでの時間です。生成された HTML をコピーしてハンドルバーに移動し、その動的部分をバインディングに変更することから始めます (
{{name}}
)。モデルを計画し、フィクスチャを使用してすべてを機能させます。いくつかのコントローラを作成してフローを追加し、最後にフィクスチャを新しい Rails API の呼び出しに置き換えます。
- ページの一部。Ember はページ全体を所有するのが好きなので、これは注意が必要ですが、書き換えには時間がかかり、作業するのに十分な価値のあるサイド アプリがない可能性があるため、最善の方法かもしれません。これを行う場合、Ember で履歴を無効にし、更新するページの部分に rootElement を設定する必要があります。このセクションとアプリの他のセクションとの間に相互作用がある場合、Ember が生成したマークアップをページ内の従来の JavaScript コードと互換性を持たせる必要がある場合があります (動作に使用されるデータ属性を維持するなど)。
また、TurboLinks を使用していて、Ember を使用するまで無効にできない場合は、ember がターボリンクのページ ライフサイクルで適切に読み込まれることを確認する必要があります。TurboLinksHackForEmberを参照してください。