![](https://habrastorage.org/storage/0695bf43/853032a9/d74eae2a/ef88d2e1.png)
注意すべき最も重要なことは、「すべてのベスト」ステートメントの欠如です。 そして、Liftがほとんどのフレームワークよりも複雑であるという理由だけで、これは理解できます。 第一に、 Scalaの機能面を積極的に使用しているため、そして第二に、Scalaは強力な静的型付けを備えた言語であるためです。 しかし、学ぶ準備ができている人にとって、Liftは非常に強力なツールです(経験から、過去数か月間、これを使用してきました)。
最初に、いくつかの背景情報。
主な事実:
- 開発の始まりは2007年、最初のバージョンは2009年、現在のバージョンは2.2です。
- すでに2009年にFoursquareは PHPからScala / Lift に完全に書き直され、現在ではFoursquareは600万人以上のユーザーと1秒あたり数千のリクエストを処理しています
- Scalaで記述されているため、JVMのすべてのライブラリ、サーブレットコンテナなどと互換性があります。 .jarを既存のJava Webアプリケーションに接続し、web.xmlを編集して使用するだけです。
- アイデアを開発するために、著者は当時の最も強力なフレームワークであるRails、Django、Wicketなどを最大限に活用しようとしました。
- Liftテンプレートは有効なHTMLであり、コードを含めることはできませんが、特にScalaにはXMLサポートが組み込まれているため、コードから直接HTMLを生成できます。
- すべてのロジックと設定は、特別なXMLファイルや他のツールなしで、Scalaのみに実装されます。
- SBTとJRebelを使用すると 、開発サイクル(コードを変更してからブラウザーで更新するまでの時間)が数秒に短縮されます。
- 最も危険な10個のうち6個( OWASPによる)に対する保護を自動的に保証します。 実際のシステムでは、これは、たとえば、FoursquareのRasmus Lerdorfによって確認されています。
既に述べたように、LiftはScalaの機能面を積極的に使用します。 これは、まず、クライアントから情報を送受信する方法、変換する方法、実装するインターフェイス、適切に接続する方法について考える必要がないという事実に反映されています。 代わりに、あなたは何をすべきかを書くだけです 。 最も単純な古典的な例:ボタンをクリックすると、サーバーにリクエストが送信され、そこでアクションが実行され、その後、ブラウザーに回答が送信されるボタンがあります。 コードを見てください。
テンプレート:
<button id="b">Push me</button>
Scalaコード:
"#b [onclick]" #> ajaxInvoke(() => {println("server"); Alert("client")})
コンソールにメッセージを出力し、クライアントで実行するためにJavaScriptを返します。 それだけです! 最小コード、最大結果。 このアプローチは、フレームワークのすべての部分で追跡できます。
七つのこと
他のフレームワークでははるかに困難になるか、まったく実装されないLiftから:
- 遅延ロード :長時間生成されるページの部分にマークを付けることができます。Liftは残りの部分がすぐに読み込まれ、遅い部分が準備が整うとすぐに読み込みます。
- 並列ページ生成 : ページの複数のセクションを並列生成用にマークできます。新しいスレッドが自動的に割り当てられます。
- CometとAjax :最も単純なCometチャットは、上記の例と同じ原理で20行のコードで実装されています。
- リンクされたAjaxコンポーネント(ワイヤリング) :私のお気に入りの新機能は、ページ上でいくつかのAjaxコンポーネントをリンクでき(いくつかのステップでも)、必要に応じて再描画されることです。
- デザイナーフレンドリーなテンプレート :最新バージョンでは、 テンプレートがさらに美しくなりました。Liftの指示は、2番目の
class
属性を介して渡されます。 たとえば、私のプロジェクトでは、テンプレートは通常のHTMLのように開くことができ、アプリケーションページとまったく同じように見えますが、ダイナミクスはありません。 - マルチページフォーム(ウィザード) :宣言的な方法で、マルチページまたはAjaxを介して実行できる[戻る]ボタンをサポートするフォームを説明しました。 以前は、これらのフォームはJBoss Seamの機能でしたが、Liftではさらに便利になりました。
- セキュリティ :静的型付けと関数型プログラミングの適切な使用のおかげで、LiftはインタラクティブWebアプリケーションの最も危険な脆弱性のほとんどに対する保護を保証します。
そして他のすべて
上記の機能に加えて、必要なすべてのセットがあります。
- メニュー、認可、ORM、および他のORMとの簡単な統合(たとえば、Hibernateを習慣から外します)。
- 開始に便利な既製の空のアプリケーション。
- 最新バージョンでは、セッション、リクエストなどの依存関係を変更できる非常にクールな依存性注入が登場しました。
- ローカリゼーション
- ファイルのアップロード。
- Webサービスを作成するためのツールのセット。
等 など これらすべてに、Scala言語自体のパワーを追加することが重要です。個人的には、Javaで長年働いた後、毎日私を喜ばせることをやめることはありません。
これらすべてに対処する方法は?
昨年は3回Liftを徹底的に試しました。 そして、どういうわけか彼はその本質を理解できず、それを投げた。 私はVaadinで作業するためのプロトタイプWebインターフェースの作成さえ始めました。 しかし、2010年の終わりに、もう一度試してみて、私はそれを理解することができました、そして今、私はひどく嬉しいです。 失敗した理由は、主に機能的なアプローチに慣れる必要があるためだと思います。 Javaの習慣は実際には深く根付いており、異なるコンテキストで考えることを難しくしています。
したがって、 Liftを本格的に使用する前に、おそらくScalaの機能を使用することに自信を持ってください 。
まともなScalaとLiftの本はすべて無料または入手が簡単です。 Scalaの場合、最適なオプションはScalaのプログラミング第2版です。 Liftは、主にディストリビューションのサンプル、 Wiki 、および作成者の無料の本-Simply Liftによって学習しました。 よく考えられた質問は、 StackOverflow、またはScalaとLiftの Googleグループで迅速かつ効率的に回答されます。