web-dev-qa-db-ja.com

Google AngularJSフレームワーク-リスクに見合う?

クライアントの1人用に小さなWebアプリケーションを構築するように依頼されましたが、Webアプリケーションを構築するための別のフレームワークを試す良い機会になると思います。作成するアプリケーションのほとんどはasp.net Webフォームに基づいており、MVCアーキテクチャではまだ何もしていませんが、適切なツールを使用してより構造化された方法でWebアプリケーションの作成を開始したいと考えています。

私はasp.net MVCなどの見栄えのいいものを研究していますが、Google AngularJSフレームワークのようなものを使用するために何か言わなければならないことがありますか。

可能であれば、c#を使用してサーバーサイドコードを記述できるようにしたいと思います。Webサービスを使用できると想定していても、AngularJSでこれが可能かどうかを十分に調査していません。

AngularJSを使用してアプリを開発した経験のある人はいますか?もしそうなら、それはどうでしたか?

65
TGuimond

過去2か月間、AngularJSでSwing fat-clientアプリケーションのポートを開発してきましたが、お勧めする価値があると思います。学習リソースに関する限り、公式プロジェクトサイト(およびチュートリアルを必ずお読みください)とメーリングリスト(著者は非常に役立ちます)をご覧ください。

良いもの:

  • 優れたテスト容易性
  • 双方向のデータバインディングは非常に強力な機能であり、「取得」すると非常に役立ちます。
  • IMO AngularJSテンプレートは、データ属性または「特別な」CSSクラスを使用して何かを行う要素をマークするよりもはるかに脆弱ではありません。
  • angularJSでその機能を実装するのは非常に簡単なので(ツリー、タブ、アコーディオンなど)、jqueryプラグインを使用する必要性が大幅に減少します。

悪いもの:

  • 学習曲線はかなり急なようです(私はそれほど問題はありませんでしたが、一部の人々はそれに苦労しているのを見てきました)
  • angularJSでの検証は当分の間ひどくなります(新しい実装が進行中です)
  • すべてのライブラリ/ jqueryプラグインがAngularでうまく動作するわけではなく、通常はそれらをラップする必要があります
  • aPIはまだ洗練されているので、重大な変更を期待します(ただし、頻繁なリリースと非常に優れた変更ログでは大きな問題ではありません)
  • 1ページに数千のバインディングがあるまでパフォーマンスは問題ありません。ほとんどの場合、これは制限ではありませんが、これが問題になる場合があります。

いくつかのポインター(AngularJSを学ぶことに決めた場合):

  • 一部の人々は本当にウィジェットを使いすぎています。私の経験では、HTMLの「部分」+サービスを使用し、ウィジェットを散発的にのみ使用する方がはるかに優れています。
  • ライブラリのソースコードを読む-それは角度に関することを学ぶのに最適な場所です
  • サービス/コントローラーでDOM操作なし
  • あなたがCSSクラスを使用してイベントにバインドする場合、あなたはそれを間違っています
104
psyho

+1 @psychoの回答

AngularJSはクライアント側のフレームワークであるため、サーバーで任意の言語を使用できます。テストに大きな重点を置いて、jQueryとうまく連携するように設計されています...

役に立つと思われるリソースを次に示します。

いくつかのサンプルアプリ:

SenchaTouch用アダプター: https://github.com/tigbro/sencha-touch-angular-adapter

JQ Mobile用アダプター: https://github.com/tigbro/jquery-mobile-angular-adapter

メーリングリストで自由に質問してください

Googleはまだベータ版ですが、Googleには AngularJS を使用した内部アプリが既にいくつかあります。


更新(2012年7月26日):

AngularJS v1.0がリリースされました。

一部のパブリックAngularJS搭載アプリについては、 http://builtwith.angularjs.org をご覧ください

26
Vojta

私見は、彼らがサポートするのが難しいかもしれないクライアントのために何かを開発することは専門的ではありません。クライアントが経験豊富なAngular=専門家を雇うこと、またはその「急な学習曲線」を登るように自分の人々を訓練することは困難であることを心に留めておく必要があります。すぐに、「光沢のあるAngularアプリをクライアントのデータベースに接続するにはどうすればよいですか?」という質問に簡単に答えることができますか?いくつかの既存のコードを潜在的な将来のニーズに合わせて調整しますか?正直に言ってください。

昔ながらの信頼できるLAMP開発をAngularと比較してください。 「小さなWebアプリケーション」の場合、専門家はクライアントに保守可能でシンプルなものを提供すべきだと本当に信じています。

Angularがクールでセクシーなどではないなどと言っているわけではありません。しかし、最新のフレームワーク流行に加えて、クライアントの将来の保守性について考える必要があります。 Angular=を使用して独自のWebサイトを作成し、信頼できるクライアントにすばらしい新しいスキルを付与する前に、あなたが考えていることを確認してください。

20
noogrub

私はこれを読んだことを覚えていますSOスレッドは私の頭の中で同じ質問で数ヶ月前に、私たちはAngularJSを進めることにしました、そして私たちはこのプロジェクトでまだ最善の決定をしました。

AngularJS + ASP.NET MVC4 REST WebAPI。

このようなNiceクライアント側のJavascript MVCフレームワークの後、ほとんどの場合、必要なのはREST API /構造は古い思い出のように感じるでしょう)。

Angular-UIの優れたアドオン(esp ng-grid)が見つかります。

プロジェクトの完了後すぐに、オープンソースの世界向けに作成したディレクティブの一部を追加する可能性があります。

11
Sutikshan Dubey

私は長年、AngularJSのメリットを調査して、作成している製品のコアフレームワークとして活用しています。 AJSには学習する価値がある多くの側面があります。はい、少し学習曲線がありますが、特にクライアント側の機能をさらに制御したい場合は、それだけの価値があります。

JQueryは実行時にDOMを操作しますが、AJSはJSレンダリングライフサイクル内に位置します。これにより、HTML要素と属性を作成することにより、DOMに新しいトリックを教えることができます。これは非常に強力です。あなたができることは、あなたの目的や必要に応じて新しいElementの動作を導入することです。 AJSでは、これらのカスタムHTML属性/要素はディレクティブと呼ばれます。独自のディレクティブを作成する機能により、現在のHTMLにはない機能を構築して、現在および将来のすべての最新ブラウザーで実行される機能をプッシュできます。新しい振る舞いを誘発する多くのアプローチの中で、AJSは、それをどのように選択したかにより、最も安全な方向性を示しているようです。

AJSでは、JQueryよりもパフォーマンスが大幅に向上します。

双方向のデータバインディングのシンプルさと、クライアント側のMVCパターンでの懸念の分離が大好きです。これは、上で指摘したように、優れたテスト容易性を提供します。スコープオブジェクトは、ビュー(HTML)、モデル(データ)、およびカスタムコントローラー間の接着剤です。スコープは、親属性へのアクセスを提供し、兄弟レベルで分離することができます。これは、一部の再利用可能なテンプレートにとって重要です。

テンプレートは、アプリケーション全体で作成および再利用できます。テンプレートには、0個以上のカスタムディレクティブを含めることができます。

私はPRISMやMEFなどのフレームワークを使用していましたが、AJSにはこれらの.NETフレームワークに存在する機能のほとんどが29Kのフットプリントにあることがわかりました。彼らは遅延読み込みに取り組んでいるといううわさがあり、それが提供されれば、非常に興味深いLOB型機能を提供します。

AJS用に構築されているUIフレームワークは多数ありますが、少し努力すれば、必要に応じてサードパーティのコントロールライブラリをラップできます。秘Theは、これらのサードパーティのコントロールに変更が加えられたときに、その適用方法を使用してAJSが適切に通知されるようにすることです。

VS 2012内でAJSとMS TypeScriptを組み合わせると、VS内のプロジェクトに慣れている人にとってうまく機能する非常に印象的なプロジェクトを管理および構築することができます。

AJSを見る理由は他にもたくさんありますが、KnockOutなどのフレームワークを検討している場合は、学習曲線に関係なく、AJSを強くお勧めします。 Knockoutはライブラリ、AJSはフレームワークです。

11
user1333524

これまでのところ、GoogleのAngularは素晴らしいと思います。特にデータバインディングと依存性注入のようなものです。

他のjsフレームワークについては、knockout.js、backbone.jsなどがあります。ここにいくつかの投稿があります: backbone.jsおよび/またはknockout.jsのangular.jsの例

8
Eric_Guo

この投稿は古く、Angularを使用したことがないことは承知していますが、私はあなたに似た背景を持っています。質問をするときはあなたと同じ時点です。

したがって、将来の訪問者の利益のために、「リスク」のいくつかと私が有用であるとわかったリソースへのリンク...

  • 多くの人が既に述べたように、Angularは非常に急な学習曲線を持つことができます「私だけでなく、非常に賢い開発者と考える同僚は、いくつかの基本概念に苦労しています」- AngularJSはすごい...そして地獄のように難しい (リンクにはあなたが求めた良いチュートリアルリンクもあります)、そしてバージョン2のものは Javaのように見える です。私の意見では、ディレクティブは冗長な注釈などがなくても理解するのに十分困難です。
  • 特に、多数の要素でng-repeatを使用している場合、Angularのパフォーマンスが低下する場合があります AngularJSの速度と速度を考慮する および Scaylrの経験 。他の人は、パフォーマンスが実際に〜2000のバインドされた要素を超えて低下することを述べていますが、それは通常、それ以上の要素を持つアプリはおそらく良いアプリではないという議論に出会っています。ただし、多くのバインドされたオブジェクトを必要とする正当なユースケースがある場合は、注意してください。
  • Angularは人気があります 投稿者の観点から ですが、jQueryのように 実稼働使用量 の点でかなり遅れています。 Angular開発者は難しいかもしれません。変換するjQueryまたは他の開発者は、その「急な学習曲線」に対処する必要があります。
  • Angularは若いので、新しいAngularスキルが雇用可能になり、新しいアプリケーションがすぐに動かないようにするのに十分な牽引力を得るという保証はありませんレガシーコードになる
  • V1.2では、AngularはIE7以前をサポートせず、 v1.3はIE8をドロップします 。> = IE9の場合、 特別なコーディング慣行
  • 使用に慣れているかもしれない多くのjavascriptウィジェット、プラグイン、ライブラリは、Angularで適切に使用することはできません。大幅な変更がなければ、人々はしばしば コンポーネントをAngularとにかく
  • 2014年3月の更新:自明ではない、機能性の高い1ページアプリの構築を2か月間試みた後:Angularには多くのバージョンがあり、どちらが最も安定しているのか、どちらが安定しているのかはわかりません。それはあなたがそれでコーディングしているものに依存します。いくつかのバグを見つけていますAngularは新しいバージョンにアップグレードすることで修正され、他のバージョンは以前のバージョンに回帰することで修正されます。jQueryでこのようなバージョンショッピングに行く必要はありません。
  • 2014年5月の更新:若い、壊れたツール。 Batarangは 機能しない までは素晴らしいです。彼らがこれを修正するまで、私はそれを信頼することはできません。

そして最後に、このことを学ぶために見つけた3つの最高のリソース

7
poshest

私はこれに「はい」と答え、それを行う方法として John Papaのhottowel の実装を確認します。

0
Warren LaFrance