4

私は現在、 rails3で書かれた Web アプリを持っています。rails3サービスを使用するバックボーン ベースの js アプリを作成したいと考えています。railsを使用したバックボーンの例はたくさんありますが、別のプロジェクトで構築することをお勧めします。このプロジェクトはpureで、他のプロジェクトのサービスを指します。 html+css+js

  • このアプローチの利点または障害は何ですか?
  • 他のアプローチはありますか?

私は、github の rails3-backbone projs のほとんどが舞台裏で多くの魔法を行っていることに気付きました (例: ハンドルバー アセットのプリコンパイル、js ファイルの自動組み込み)。また、phonegap/trigger.io/etc を使用してアプリをパッケージ化したい場合、これはより困難ではないでしょうか?

4

1 に答える 1

4

バックボーン アプリケーションを作成する場合、実際には単独で開発することは非常に理にかなっています。つまり、あなたが言ったように、純粋なhtml+css+js アプリケーションとして開発します。

そうするのには非常に良い理由があります:

  1. 展開

    アプリケーションをいつデプロイするかを検討してください。ある時点で、アプリケーションのモジュラー コンポーネントをデプロイしたくなるでしょう。これはおそらく、json をクライアントに提供するバックエンド サービスであるか、UI の微調整である可能性があります。いずれにせよ、それぞれを個別に展開できることが最善です。

  2. モジュール性

    舞台裏でいくつかの Rails マジックを使用して UI の開発を支援できるというのは、魅力的に聞こえるかもしれません。ただし、プロジェクトのモジュール性を考慮してください。

    IMO、バックボーン (または任意の AJAX アプリケーション) は美しいです。そしてその美しさは、UI コードが実際にはバックエンドの実装とは何の関係もないという事実から来ています。PHP/JAVA/RAILS/PYTHON/YOU-NAME-IT サーバーと通信できますが、それでも問題ありません。つまり、RESTFUL サーバーを実装している場合です。実際、UI コードは、静的コンテンツのみを提供する NGINX サーバー上に置くことができ、それでも問題なく動作します。これは実際にあなたが望むものです。UI コードは、バックエンドのフレームワークや、バックエンドがサポートするツールを (開発中または運用中に) 認識してはなりません。Backbone プロジェクトに不要な依存関係を導入するのは犯罪です。

    ある日、Rails ではない別のアーキテクチャに移行するのが適切だと思う日を想像してみてください。依存関係がまったくあるとしたら、それは悪夢です。むしろ、バックエンドの実装から完全に独立した UI を使用してください。

  3. 包装

    アプリケーションのパッケージ化に PhoneGap を使用するとおっしゃいました。これがおそらく、プロジェクトが独立している必要がある最大の理由です。Apple にアプリを提出する予定がある場合、サーバーから js をロードする余裕はありません。すべてのスクリプトは、スタンドアロンである必要があるアプリにパッケージ化する必要があります。

最後になりましたが、「その他のアプローチ」の提案についての質問にお答えします。これは非常に漠然としているため、この提案が役立つかどうかはわかりませんが、バックボーン プロジェクトを整理し、作業を楽にするのに役立つリソースを紹介したいと思います。

RequireJS を使用したバックボーン

これが Backbone を操作する最も素晴らしい方法だと私は主張します。RequireJSを使用すると、コンパイル済み言語でインポートする場合と同じように、js ファイルで依存関係を指定できます。これは、バックボーン プロジェクトを整理し、コードを小さなモジュールに分割する場合に非常に役立ちます。requireJS が提供する最適化ツールを使用すると、すべての JavaScript ファイルを 1 つのファイルに圧縮することもできます。プロジェクトを PhoneGap にパッケージ化する場合に役立つと思います。

アンダースコア

あなたはHandleBarの使用について言及しました。ただし、RoR のテンプレートに触発されたアンダースコアのテンプレート エンジンを調べることをお勧めします。また、Rails の使用に慣れていると仮定すると、アンダースコア テンプレート エンジンがまさに探しているものになるかもしれません。

于 2012-05-03T19:12:14.073 に答える