jQueryやAngularJSなどのJavaScriptライブラリでUIを実現できる場合のJSFの必要性


116

私は、JSFがUIフレームワークであり、いくつかのUIコンポーネントを提供していることについて読んでいました。しかし、jQueryUI、AngularJS、ExtJS、さらにはプレーンなHTML、CSS、JavaScriptから利用できるコンポーネントの数とはどのように優れているか、どのように異なるのでしょうか。

なぜ誰かがJSFを学ぶ必要があるのですか?


3
サーバー生成htmlの利点:検索エンジンの検索機能、認証に基づいてビューを非表示にします。それ以外の場合は、純粋なajax uiのためにそれを放棄しました。
Neil McGuigan、

5
AngularJS + RESTfulバックエンドを支持して、JSFも放棄しました。(リンゴとオレンジですが、Angularはとても素晴らしいので、JSFの多くの利点は必要ありません)
arg20

JSFは、サーブレットAPIの上に構築されたコンポーネントベースのMVCフレームワークであり、JSPまたはFaceletsなどの他のJavaベースのビューテクノロジーで使用できるtaglibsを介してコンポーネントを提供します。
Divyesh Kanzariya 2016年

回答:


154

プレーンなJSP /サーブレット/ HTML / CSS / JSへのJSFは、プレーンなJSへのjQueryのようなものです:より少ないコードでより多くを実行します。PrimeFaces(jQuery + jQuery UIベース)を例に取るには、ショーケースを参照して完全なコード例を確認してください。BootsFaces(jQuery + Bootstrap UIベース)にも、完全なコード例を示すショーケースがあります。これらの例を詳しく検討すると、基本的にはモデルとして単純なJavabeanクラスが、ビューとしてXHTMLファイルが必要であることがわかります。

JSFをHTML / CSS / JSだけの代わりとして見るべきではないことに注意してください。サーバー側の部分(特に:JSP /サーブレット)も考慮する必要があります。JSFは、HTTP要求パラメーターを収集し、それらを変換/検証し、モデル値を更新し、ビジネスに適切なJavaメソッドを実行し、HTML / CSS / JSボイラープレートコードを生成するというすべてのボイラープレートの必要性を取り除きます。JSFを使用すると、基本的にはビュー定義としてのXHTMLページとモデル定義としてのJavabeanクラスになります。これにより、開発が大幅にスピードアップします。

すべてのコンポーネントベースのWeb MVCフレームワークと同様に、JSFでは、レンダリングされたHTML / CSS / JSをより細かく制御できます。カスタムJSコードの追加は、サーバー側のJSFビューステートも考慮する必要があるため、それほど簡単ではありません(たとえば、JS側で無効なボタンを有効にしても、JSF側のボタンは有効になりません。大きなセキュリティ上の利点)。ただし、それが主要なショートッパーである場合は、Spring MVCのようなアクションベースのWeb MVCフレームワークを探してください。HTML / CSS / JSコード(およびXSS、CSRF、DOM操作の防止!)をすべて自分で作成する必要があることだけを考慮に入れます。。また、FaceletsからJSPにフォールバックすると、高度なテンプレート機能も使用できなくなります。

一方、大きなJSP /サーブレット/ HTML / CSS / JS / jQueryベースのWebサイトがあり、繰り返されるJSP /サーブレット/ HTML / CSS / JS / jQueryボイラープレートコードを再利用可能なコンポーネントにリファクタリングする場合は、ソリューションの1つはJSFです。カスタムテンプレート、タグファイル、コンポーネントがこれを支援します。その観点では、JSFはJSP /サーブレット/ HTML / CSS / JS / jQueryの上に立っています(それが、JSFに飛び込む前にこれらの基本を理解することが非常に重要である理由でもあります)。

実際のキックオフJSFベースのプロジェクトは、Java EEキックオフアプリにあります。JSFの隣に、優れたHTML5CSS3jQueryが含まれていることがわかります。

以下も参照してください。


15
より少ないコードでより多くを行いますか?しかし、より多くのxmlを使用すると...なんとトレードオフ...さらに、柔軟性が
失われ

33
JSF 2.0以降では、xmlは必要ありません。
Cagatay Civici 2012

5
JSF 2.0
VdeXに

1
JSFでは、ビジネス/コントローラーレイヤーとビューの間に明確な境界線がないため、サーバー上でビューの多くが生成されているようです。私はすべてがブラウザーに送信される前にサーバーでコンパイルされることを理解していますが、レンダリングロジック/データを送信するよりも、ビューがレンダリングするデータを返すJavaオブジェクトを好みます。
リック

1
JSFは、HTMLを強力に制御するサーバーサイドのものであることに同意します。
Plain_Dude_Sleeping_Alone 2015

28

JSFは、JavaショップがjQueryのようなものを学び、複雑なJSを構築する必要がなく、純粋にJavaスタックに焦点を合わせるために作成されました。時は金なりであり、すでにJava開発に重点を置いている多くの場所で、スタック内の言語/ピースが1つ少ないため、トレーニングと保守がより速く、したがってより安価になります。

特に、プロジェクトの開発者の一部がWebにあまり精通していない場合は、JavaScriptが大規模なチームのメンテナンスの悪夢になりやすいことを付け加えておきます。


JQuery JSなどにかなり慣れている場合、JSFに集中する必要はありませんか?
sushil bharwani

2
それはすべて、解決しようとしている問題と、それをどのチームで解決しようとしているのかによって異なります。
Andrew White

1
チームについては同意しますが、JSFで解決できる問題とjs jQueryなどで解決できない問題について知りたいです。JSFを学ぶ動機を築こうとしているだけです。
sushil bharwani

1
なし。同じ問題を解決する別の方法を提供するだけです。
Andrew White

8
JQueryに本当に慣れている場合でも、JSFは本当に便利です。サーバー側のコードをクライアント側の表現に接続する簡単な方法を提供します。一部のFacelets「複合コンポーネント」は、HTMLとJS(JQueryを含む)のラッパーにすぎません。これらは簡単に構築でき、一般にクライアントサーバー側の接続全体を簡単にします。
Arjan Tijms

23

JavaScriptとjQueryなどのフレームワークを使用すると、完全な柔軟性と完全な制御が得られます。extなどを使用すると、多くの制御が失われ、フレームワークに適応する必要があります。JSFを使用すると、完全にコントロールを失い、フレームワークに完全に適応する必要があります。あなたはライフサイクルなどで呼び出され、最後にサーバーへの呼び出しをいつ行うことができ、どこでできないかを制御できません。「特別な」と考えられることをするなら、あなたは非常に難しい立場にいます。また、JSFの世界では、複数列のテーブルソートや、限られた文字セット(数値フィールドなど)しか入力できないフィールドなどの基本的なものも「特別」と見なされます。

ただし、柔軟性が高ければ高いほど、エラーや悪い習慣が増える可能性があります。高い柔軟性は、高度にインテリジェントなプログラマーでのみ機能します。他のプログラマーは、プロジェクトを管理できない悪夢に変えます。

しかし、JSFとその制限された柔軟性により、何かを行うための正しい方法は常にいくつか(または1つだけ)しかありません。あなたは非常に制限されており、ショートカットを作成することはできません。より多くのXMLを記述する必要があります。しかし、標準に適応すると、経験の浅いプログラマや熟練していないプログラマが生成するコードをより適切に制御できます。その結果、大企業はJSFを「より安全」にするため、JSFを愛しています。

私がGWTからJSFに移行したとき、私にとっては自然なことであるが、非常に非典型的であると見なされ、単純なことを達成することがどれほど困難であるかにショックを受けました。さらに、ラベルの後に「:」記号を追加するなど、最小限の変更を行う場合でも、GWT / jQueryを使用するアプリでは、ラベルを生成する1つの関数を変更するため、ローカライズされたプロパティを持つ数十のファイルを変更する必要があり、これも考慮されていませんでした。奇妙な私以外の誰か...


7
PrimeFacesはjQueryに基づいているため、クライアント側に多くの柔軟性があり、PrimeFacesコンポーネントは、カスタマイズするイベントコールバックとしてクライアントとサーバー側に多くのフックを提供します。JavaScript APIをオーバーライドして、CSSをカスタマイズして外観をカスタマイズすることもできます。:ラベルをweb.xmlでグローバルに構成して、よりjQueryに適した文字にすることができます。
Cagatay Civici 2012

1
同意した。一般的なルールは次のとおりです。フレームワークを使用しない場合は高度なJavaScriptプログラミングが必要であり、維持が難しくなりますが、パワーと複雑さが大幅に向上します。一方、フレームワークへの依存は構築と維持が容易になりますが、アプリの潜在的な容量が制限されます。
KTys 2014年

10

JSFを使用する利点は、xhtml + css + jsを生成することだけではありません。コンポーネントベースのフレームワークのように、JSFは生成できるマークアップに制限を課すことがあります。しかし、JSFはそれだけでなく、ライフサイクルが大きく役立ちます。入力を検証した後、モデルを更新してサーバー側のBeanを簡単に同期できます。「ユーザーがここに入力するものは何でも、それが数値かどうかを確認し、そうであればオブジェクトXXのプロパティYYに保存します」とJSFがすべて実行します。

つまり、JQueryやJSなどを引き続き使用できます。しかし、JSFはサーバー側のコードの記述に関して多くの利点を提供し、多くのボイラープレートからあなたを救います。


9

jsfが何かを追加することに強く反対します。オーバーヘッドが増えるだけです。サーバーでuiを実行することは、これまでに聞いた中で最も馬鹿げたことです。そして、大規模なチームのjavascriptはうまく機能します。これは、再利用コードと呼ばれています。

いくつかのjspタグでjqueryをラップするだけで、必要な作業はすべて完了します。.shacklesや、.jsfやrichfacesによるスケーラビリティの問題に耐えないでください。


14
JSFはフォームベースのアプリケーションを対象としています。jQueryは優れています(いや、PrimeFaces、RichFaces、IceFacesなどの人気のあるJSFコンポーネントライブラリの多くは、内部で使用されています)。プレーンなJSP /サーブレットを使用すると、ひどいボイラープレートコードが生成されるだけです。繰り返しますが、JSFはHTML / CSS / JSだけでなく、JSP /サーブレットでもあります。
BalusC 2012

2
JSF全般、特にJSFページのライフサイクルについて詳しく読むと、気が変わるかもしれません。それから、あなたはそうしないかもしれません。
Ahmed Anwar

5

JSF、Spring MVC、Struts、Grails、JQuery、ExtJSを使用した経験から、Grails + ExtJSは強力な組み合わせの1つだと私は考えています。

私はいつでもJSFよりGrailsを選ぶでしょう。クライアント側のフレームワークおよびライブラリとしてのExtJSの完全性が気に入っていますが、JQueryよりも学習曲線が急です。


3

jQueryとJSFの最大の違いは次のとおりです。

  • MVCアーキテクチャなし
  • 状態管理なし(セッションまたは会話に日付を保存、自動クリーンアップなど)
  • いいえ(デフォルト)検証ライブラリー
  • テンプレートライブラリなし
  • 高度なナビゲーション/ルーティングなし
  • クライアント側

jQueryは、フルスタックのWebフレームワークとして使用することを意図したものではありません。これは、低レベルのJSコードを置き換えるためのもので、JSの記述がより少ないコード行でより簡単かつ強力になるように意図されていました。

したがって、主にHTML要素に動作を追加するために使用する必要があります。


2

大規模なWebアプリケーションにExtJSフレームワークを使用したことがあるので、その使い方がいかに簡単かを知っています。ExtJS(Schena)は、MVCアーキテクチャでの(Oracle 11g)データベース相互作用に最適です。ビューは、視覚的/ユーザー対話のためのものでした。コントローラは、PLSQLパッケージ(CRUD、SQL選択クエリなどのAPI)を形成するために必要な「処理」とトリガーを指定しました。モデルとストアファイルは、データ項目をビューア/入力に「マップ」するために使用されました。

ExtJSは、Angular JSの方が適している可能性がある、データベースを多用しないWebインターフェースには適していません。

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