65

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

私は asp.net MVC などの非常に良さそうなものを研究してきましたが、Google AngularJS フレームワークのようなものを使用することについて何か言いたいことがあるのだろうかと思っています。

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

AngularJS を使用してアプリを開発した経験のある人はいますか?もしそうなら、それはどうでしたか?いくつかのチュートリアルの正しい方向性を教えてもらえますか?

4

8 に答える 8

104

ここ数か月、AngularJS で Swing ファット クライアント アプリケーションのポートを開発してきましたが、これは推奨する価値があると思います。学習リソースに関する限り、公式プロジェクト サイト (チュートリアルも必ず読んでください) とメーリング リスト (作成者は非常に役に立ちます) をチェックしてください。

良い点:

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

悪い点:

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

いくつかの指針 (AngularJS を学ぶことに決めた場合):

  • ウィジェットを使いすぎている人もいます。私の経験では、HTML の「パーシャル」+ サービスを使用し、ウィジェットを散発的にのみ使用する方がはるかに優れています。
  • ライブラリのソース コードを読んでください。Angular について学ぶのに最適な場所です。
  • サービス/コントローラーでの DOM 操作なし
  • css クラスを使用してイベントにバインドする場合は、間違っています。
于 2011-10-04T22:42:20.313 に答える
26

+1 @サイコの答え

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

役立つリソースを次に示します。

アプリの例:

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

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

質問はメーリングリストでどうぞ!

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


更新 (2012 年 7 月 26 日):

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

AngularJS を利用した公開アプリについては、http://builtwith.angularjs.org をご覧ください。

于 2011-10-10T01:28:30.760 に答える
20

私見は、クライアントがサポートするのが難しいかもしれない何かを開発することは専門家ではありません。クライアントが経験豊富な Angular の専門家を雇ったり、その「急な学習曲線」を登るように自社の従業員をトレーニングしたりすることは難しいことを心に留めておく必要があります。また、これまでのところ、ドキュメントはそれほど優れていません。「光沢のある Angular アプリをクライアントのデータベースに接続するにはどうすればよいですか?」という質問に、すぐに簡単に答えることができますか? 将来、クライアントは簡単に既存のコードを取得して、潜在的な将来のニーズに適応させることができますか? 正直に言ってください。

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

Angular がクールで魅力的でないなどと言っているわけではありません。しかし、最新のフレームワークの流行に加えて、クライアントの将来の保守性について考える必要があります。軽く踏むのが私のお勧めです。最初に Angular を使用して独自の Web サイトを構築し、信頼できるクライアントに素晴らしい新しいスキルを与える前に、自分の考えを確認してください。

于 2012-06-30T05:50:52.457 に答える
11

数か月前にこの SO スレッドを読んで、同じ質問を頭に浮かんだことを覚えています。AngularJS を使用することにしました。このプロジェクトで下した最良の決定です。

AngularJS + ASP.NET MVC4 REST WebAPI を使用しています。

このような優れたクライアント側 Javascript MVC フレームワークの後では、サーバー側でビジネス ロジック レイヤーと対話する REST API レイヤーのみが必要になる可能性が最も高く、サーバー側で MVC は必要ありません (ASP.NET MVC/Spring/Structs は古い思い出のように感じるでしょう)。

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

私たちのプロジェクトが終わったらすぐに、オープンソースの世界のために私たちが書いたディレクティブのいくつかを入れるかもしれません。

于 2013-01-21T11:45:38.433 に答える
11

私は何ヶ月も AngularJS のメリットを研究して、私が作成している製品のコア フレームワークとして利用しています。AJS には、学ぶ価値のある多くの側面があります。はい、少し学習曲線がありますが、特にクライアント側の機能をより詳細に制御したい場合は、それだけの価値があります。

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

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

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

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

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

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

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

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

于 2013-02-10T16:25:25.773 に答える
8

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

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

于 2012-04-25T06:42:07.750 に答える
7

この投稿は古く、Angular を使用していないことは承知していますが、私はあなたと同じような背景を持っており、質問をするときと同じポイントにいます。

したがって、将来の訪問者の利益のために、「リスク」のいくつかと、私が役立つと思ったリソースへのリンク...

  • 多くの人がすでに述べているように、Angular の学習曲線は非常に急勾配である可能性がありますリンクには、あなたが求めたいくつかの優れたチュートリアル リンクもあります)、バージョン 2 のものはJava のように見えますが、これは C# のバックグラウンドでは問題にならなかったでしょう。私の意見では、ディレクティブは詳細な注釈がないと理解するのが難しいすぐ。
  • 特に多数の要素で ng-repeat を使用する場合、Angular のパフォーマンスが低下することがあります。バインドされた要素が 2,000 個を超えるとパフォーマンスが実際に低下すると言う人もいますが、それよりも多くの要素を含むアプリはおそらく良いアプリではないという議論が通常行われます。ただし、多くのバインドされたオブジェクトを必要とする正当なユース ケースがある場合は、このことに注意してください。
  • 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 月の更新: 若くて壊れたツール。バタランは、うまくいかなくなるまで素晴らしいです。彼らがこれを修正するまで、私はそれを信用できません。

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

于 2014-03-11T23:29:29.497 に答える
0

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

于 2013-12-27T04:38:08.773 に答える