4

Java/Ruby/Python/PHP などに基づいたWeb アプリケーション フレームワークは数多くあります。個々のフレームワークに固有の機能を発見、比較、対比することに熱心です。

フレームワークのどの機能が便利だと思いますか? また、知っておくことが重要な理由は何ですか?

例えば

投稿ごとに 1 つの機能に制限してください。

概要:

  • ストライプ - フラッシュ スコープ
  • Django - テンプレート内の JSON 化された変数
  • Symfony - モデル生成。バックエンド管理の生成
  • Grails - GORM 形式の強力な ORM
  • Seaside - リレーショナル データベースはなく、OO をコーディングするだけ
  • シナトラ - ミニマリズム
  • Spring Web Flow - フローとビューのスコープ
4

13 に答える 13

3

代替テキスト
(ソース:symfony-project.org

symfonyはPHPフレームワークに関していくつかの非常にユニークなことをします。

これらの機能のいくつかは他の場所で使用されていると思いますが、PHP内ではそれらはユニークだと思います。

于 2009-07-19T21:16:10.113 に答える
2

Django のビルトイン adminは、採用に関する限り、おそらく Django のキラー機能です。データベース モデルを作成して登録し、データの入力を開始します。必要に応じてカスタマイズします。Django 以外のプロジェクトで常に使用するのは簡単です。

于 2009-07-28T16:27:16.067 に答える
2

Grails http://www.cjsdn.net/JVM/Grails/Docs/1.1/img/grails.png

GORM - これほど強力な ORM を備えながら、これほど使いやすいフレームワークは他に見たことがありません。

于 2009-07-24T13:26:31.070 に答える
2

シナトラのミニマリズム。Web アプリケーション全体を 1 つのファイルにのみ記述できます。(明らかに、これは大規模なアプリケーションには適していませんが、ラピッド プロトタイピング、小規模なサイト、および Web サービスの場合、すべてを 1 か所にまとめることができます。)

于 2009-07-23T07:08:12.860 に答える
1

SmalltalkのSeasideは、リファクタリングとgoto-lessプログラミングをサポートしています。コンポーネントベースでテンプレートがないということは、多くの重複を回避できることを意味します。

于 2009-07-24T13:05:37.030 に答える
1

Seaside では、リレーショナル データベース (SandstoneDB、Magma、または Gemstone) を気にする必要がないため、いくつかのメソッドを使用してデータベース コードの代わりに OO コードを記述できます。

于 2009-07-24T13:36:51.727 に答える
1

CakePHP ロゴ

CakePHP の注目すべき機能:

  • bakeデータベースからモデルとコントローラーを自動的に作成するツール
  • zero-config - データベース接続を設定するだけで、すぐに使用できます
  • scaffolding - ビューを生成する必要さえありません。cake がビューを生成します。
  • 多くのヘルパー - AJAX、JavaScript、HTML、フォーム、ページネーション、XML、RSS など
  • アクティブレコード
  • 単体テスト用の SimpleTest
  • データ検証 - 使いやすく強力
  • データのサニタイズ - コード インジェクションの心配が少ない
  • ルーター - 「カスタム」URL を特定のコントローラー/アクションにリダイレクトできます

要約: 多くの人は、Cake は PHP 用であり、Rails は Ruby 用であると考えています。

于 2009-07-28T16:41:23.760 に答える
1

Django でカスタム テンプレート タグを記述する方法を知っている必要があります。たとえば、次のタグを使用すると、テンプレート内の Django 変数を JSONify できます。

@register.filter
def jsonify(o):
  return mark_safe(simplejson.dumps(o))

私のウェブサイトはすべて JavaScript であるため、これは便利です。そのため、Django テンプレートを使用してスクリプトなしのバージョンのサイトも作成しています。これは主に、Google がサイトをクロールできるようにするために役立ちます。たとえば、Javascript をオンまたはオフにした次のページを見てください: http://www.trailbehind.com/Yosemite%20National%20Park/

私が持っている他の便利なタグを次に示します。

@register.filter
def attr_name(id):
  return util.get_attribute(id).name


@register.filter
def dashes(name):
  return name.replace(' ', '-')

そして、Python のデコレータ構文は、これらを短くて魅力的なものにしているのではないでしょうか?

于 2009-07-19T20:55:59.153 に答える
1

Spring Web Flow - シリアライズされた会話 / 優れたブラウザの戻るボタンのサポート

ブラウザーの [戻る] ボタンと履歴のサポートは、ほとんどの Web アプリにとって頭痛の種です。単純に、クライアントが認識した状態/ページがサーバー上の内容と同期しなくなるのは簡単すぎるためです。

SWF は、ビューがレンダリングされるたびに会話状態全体のスナップショットを作成することで、これを解決します。ほとんどのステートフル データは、SWF の追加スコープ (会話、フロー、ビュー) の 1 つに格納されるため、会話スナップショットでシリアル化されます。

SWF の URL は、ページやアクションなどのリソースを識別しません。代わりに、フローと会話を識別します。SWF は POST-REDIRECT-GET を暗黙的に実装するため、ページがレンダリングされるたびに、会話とシリアル化された会話スナップショットを一意に識別する flowExecutionId が URL に含まれます。したがって、ユーザーがブラウザーの戻るボタンまたは履歴を使用すると、各 URL は実際にはその時点での会話全体の状態を復元します。

これにより、理想的な戻るボタンの処理が実現します。クライアントの状態が会話の状態と同期しなくなることはなく、ユーザーは以前の状態から自由に続行できます。

開発者は、ユーザーが特定のアクションを実行したときに、履歴 (保存されたスナップショット) を破棄または無効にすることもできます。これは、データベース内の何かを変更するユーザー アクションに適しています。ユーザーは、データベース内の内容を表していない状態に戻ることができないためです。

開発者は、保存するスナップショットの数を正確に制限できます。特にメモリと比較して、ハードドライブの容量は十分にあるため、これはかなり優れたソリューションです。

ただし、主な制限の 1 つは、会話、フロー、またはビューのスコープに配置された属性はすべてシリアライズ可能でなければならないということです。

于 2009-07-24T18:53:37.857 に答える
0

Icefacesには強力でスケーラブルな ajax プッシュ フレームワークがあります

于 2009-07-28T21:53:21.493 に答える
0

Zend フレームワーク

Zend Frameworkには、次の注目すべき機能があります。

  • 使用するものを選択して選択します。ZF は軽量の疎結合コンポーネントのコレクションです。
  • GoogleAmazonYahoo!との統合 、Flickr、およびその他のいくつかの API
  • 使いやすい XML-RPC、SOAP、および REST サーバー/クライアント
  • Adobe AIR & Flex との統合
  • Zend_CodeGenerator
  • 組み込みの DB、LDAP、および OpenID 認証
  • DojoおよびjQueryとの優れた統合
  • エンタープライズ アプリケーションに適したフレームワーク (FOX、IBM、Right Media)
  • 非常に活発なコミュニティ (irc.freenode.net の #zftalk)
  • モデルは作成されません。(これは良いことです)。
于 2009-07-28T06:05:52.390 に答える
0

うーん... 私は約 15 年の PHP 開発者です。Rails (Ruby on Rails) フレームワークを見てください。データベースの移行などの独自の機能がいくつかあり、インターフェイスの実装は Java や PHP などの言語とは異なり、構成ファイルは ini ファイルとは異なります (コードを記述できます)。

それが役に立てば幸い。

于 2009-07-19T20:58:09.523 に答える