22

Ruby on Rails フレームワーク (CRM システム) を使用してかなり大きなアプリケーションを開発しており、ExtJS を使用するように書き直して、Rails がデータ処理のみを行い、ExtJS がデスクトップのような方法でブラウザーのすべての重労働を行うようにすることを検討しています。

最善のアプローチについて、経験とヒントをお持ちの方はいらっしゃいますか? ExtJS は、比較的大きな (そして複雑な) アプリケーションで使用できるほど成熟していますか? Rails の部分についてはどうですか? ここでの最善のアプローチは何でしょうか?

編集:

明確にするためだけに。私は、すべての JavaScript クライアント側アプリケーション コードが一度に (アプリケーションの起動時に、最適には 1 つの圧縮された js ファイルとして) 読み込まれ、次に ajax を使用して Rails との間でデータを送受信するような方法でそれを行うことを好みます。アプリ。また、Ext アプリケーション要素の動的生成に ERB を利用できるとよいでしょう。

4

10 に答える 10

29

私は現在、ExtJS で書かれた非常に大きなデスクトップ スタイルのアプリを持っています。以前は Perl の Catalyst MVC フレームワーク上で実行されていましたが、View レイヤー全体が ExtJS ベースのデスクトップに変換された後、Ruby on Rails のモデルとコントローラーに移行し始めました。高速ではないにしても同じくらい高速で、保守が容易で、コード ベースがはるかに小さくなっています。

  • Ext の JsonStore がレコードを問題なく読み取れるように、json にモデルのルート名が含まれないようにアクティブなレコード構成を設定してください。include_root_in_jsonfalseに設定する必要があるというActiveRecord BASEのオプションがあります。

  • Ext で Application クラスを適切に定義し、コードの再利用を最大化するようにしてください。DOM で未使用のノードをクリーンアップする何らかの方法が必要になるでしょう。最新バージョンの Safari または Firefox 3.1 を使用していない限り、Javascript のパフォーマンスは非常に厄介です。

  • ページが読み込まれるときに、サーバー上のデータを JSON 形式でアプリケーションに提供するための何らかのキャッシュ方法が必要になる場合があります。これにより、Ajax 経由の往復回数が削減されます。

  • 間違いなく Ext の WindowManager と StoreManager オブジェクトを利用するか、Ext.util.MixedCollection から独自のものを展開してください

  • コードを個別の管理可能なファイルで開発し、それらを 1 つのファイルに結合するビルド プロセスを用意してから、その上で YUI のコンプレッサーまたは Dean Edwards Packer を実行して、ファイルを圧縮/難読化します。Ext が提供するものを含め、すべての JS と CSS を独自の単一ファイルで提供します。

于 2008-11-08T17:28:12.243 に答える
14

[2012 更新] ExtJS は、GPLv3 ライセンスと 2 つの商用ライセンスを提供する Sencha に買収されました。

[2008 年 10 月のコメント] ExtJS は技術面で優れていますが、数か月前のライセンスに関する失敗により、他のフレームワークを検討するようになりました。現在、ExtJS の作成者をまったく信用していません。私は、彼らがライセンスをどのように表現したか、オープンソースの擁護者であるふりをしながら、彼らを信じた人々から明らかに不当に利益を得ようとしている方法が好きではありません.

道徳的な理由で ExtJS の使用に反対しているだけです。

于 2008-10-09T08:49:46.353 に答える
5

これは私の以前の回答に対するミラノのコメントへの回答に属しますが、ここでの新参者として、私はそこに返信するのに十分な評判ポイントを持っていません:

RailsがJavaScriptファイルを1つの大きなファイルにキャッシュした結果である「spisundefined」に問題がありました(それ以外の場合は数百のファイルがあります)。キャッシングにより、改行にいくつかの奇妙なバグが発生し、すべてが失敗しました。これでしばらく髪を抜くことができましたが、解決策はRubyを1.8.6(パッチレベル72)から最新の1.8.7に更新することでした。これで問題が修正されたので、確認したい場合はもう一度確認してください(アセットのキャッシュを無効にするには、完全に更新する必要があります)。

以前にExtMVCのものに出くわしたことがあることをうれしく思います。現在のところ、主に例、チュートリアル、デモが不足しているため、理解するのは非常に難しいはずだと完全に信じています。ただし、コード自体はかなり十分に文書化されています(少なくとも新しいコードは、とにかく、クリアする必要のあるものがたくさんあります)。

私は現在、適切な「リリース」の準備が整う前に、いくつかの主要なクラスをリファクタリングしているところです。準備ができたら(数週間考えています)、ドキュメントを生成し、デモとサンプルコードを含むクイックサイトを設定します。そうしたら、ブログ(http://edspencer.net)に投稿します。

これに関する私の目的は、このタイプのアプリケーションの作成をはるかに簡単にするフレームワークを提供し、いくつかの規則を確立することです。現在、ExtJSアプリケーションを構築するためのコンセンサスやデフォルトの方法はありません。そのため、それを進めるためにできることはすべて、正しい方向への一歩となるでしょう。コメントや貢献は大歓迎です。

于 2008-10-18T12:57:56.320 に答える
4

あなたが説明した種類の大規模なRoR / ExtJSアプリ(「シングルページ」クライアント側AJAX駆動)の展開に成功しました。Ext_scaffold はほとんどお化けです。

RoR と ExtJS をスムーズに連携させるのはそれほど負担ではありません。基本的な選択は、ExtJS を拡張して「Rails を話す」ようにするか、RoR にパッチを当てて「ExtJS を話す」ようにするか、またはその中間で対応するかです。チームのスキルがどこにあるかによって異なります。

私は次のような中間戦略を採用しました。

  • 拡張Ext.data.StoreExt.data.Record、Rails ルーティング規則に注意する
  • ActiveRecord 関連付けをハックExt.grid.EditorPanelExt.form.BasicFormてうまく操作する
  • いくつかのモジュールを作成して拡張ActiveRecord::BaseApplicationController、単純にコミットしExt.grid.EditorPanelます。Ext.form.BasicForm

それだけです。

そうは言っても、ExtJS には欠点があります。

  • 内部で手を汚す必要があります。デモに惑わされないでください。
  • コミュニティのドキュメントは貧弱で、PHP 中心です。
  • Github/Lighthouse 中心の RoR の世界から来て、VBulletin を使用するのは 1998 年に目覚めたようなものです。
  • コードは少し過剰に設計されています。
  • チームはオープン ソースの信頼性を失ったため、オープン ソースの酸素を失いました。
  • チームは GWT との統合に重点を置いているようです (「enterpri$ey」と言える人はいますか?)。
于 2008-10-12T13:26:07.263 に答える
1

Rails で ExtJS を使用した経験もあります。このフレームワークを使用すると、見栄えの良いウィジェットを無料で入手できます。REST 規則を使用して単一ページのアプリケーションを開発する場合、REST 規則もフレームワークとうまく調和するはずです。RJS でもうまく機能します。

フレームワークの使用に関する私の不満は次のとおりです

  1. 単一ページのアプリケーションをリロードするのはばかげているため、flash[:notice] を実際に利用することはできません。これにより、RJS/javascript メソッドを使用して表示する必要があるため、検証通知とメッセージを渡すのが面倒になります。

  2. erb はあまり使用できないため、多くのロジックを json コールバックにカプセル化する必要があります。

于 2008-10-09T08:21:30.887 に答える
1

私は ExtJS と Rails を多数のアプリケーションにデプロイしましたが、それらは確実に相互に通信することができます。Rails + Ext で現在開発中のアプリの簡単なデモをhttp://demo.domine.co.uk/adminにまとめました。フロントエンドはまだ完成していないので、今のところ無視してください。管理セクションは基本的に完成しており、次のコマンドでログインできます。

ユーザー名: エドワード パスワード: rarrar

デモはまだ完全には完成していないため、現段階では Firefox 以外で正しく動作することを保証することはできません。他のブラウザーで動作しない理由はありません。私はまだテストに時間を費やしていません。ポイントは、レールとの統合についてです。

スタート メニューのすべてのアプリケーションは、JSON を介して Rails バックエンドと対話しています。基本的な Rails プラグインを作成して、そこでほとんどの作業を行いました。まもなくその背後にあるコードをリリースしますが、今のところ、これら 2 つのテクノロジがどのように連携できるかについてのアイデアが得られることを願っています...

于 2008-10-17T13:52:39.500 に答える
1

Ext は、この状況を処理するのに十分成熟しています。私は現在、多くの Ext を使用する Rails プロジェクトに取り組んでいます。最も困難な部分は、Railsto_jsonで Ext が読み取れる JSON をレンダリングすることです (検証に失敗した配列、ハッシュ、モデルなど)。

Railsの ext_scaffoldプラグインを確認してください。私はこれから始めて、必要なことを実行するまでActiveRecord/拡張機能をハッキングしました。ActionView

于 2008-10-08T12:58:35.257 に答える
0

ExtJS の経験はありませんが (「Practical Rails Projects」の本を読んだ以外は)、jrails で jQuery Flexigridを使用して、デスクトップの雰囲気をさらに高めました。

それはかなりうまくいきました。

于 2008-10-14T08:55:23.860 に答える
0

Ok。私は多くのプロジェクトで extjs gxt gwt を使用していますが、開発は非常に簡単です。しかし、プロジェクトを extjs+gwt (gxt) でビルドしたことをお伝えしたいと思います。Ruby についてはよくわかりません。 リンクテキスト

于 2009-02-08T05:40:43.833 に答える