サーバーからデータを取得してフォーマットするという同じコンテキスト内で行われる検索と更新のサイクルはすべてAngularJSでは行われていません。AngularJSを使用すると、自分のモデル(すでに慣れ親しんでいるJavaScriptオブジェクト)があり、そのモデルの値から(明らかに)モデルおよびビューについての情報がわかり、モデルに対する操作が自動的にビューに反映されます。それについて考える必要はありません。あなたはAngularJSで自分自身を見つけるでしょう、もはやDOMでものを見つけることはありません。言い換えれば、jQueryでは、CSSセレクタについて考える必要があります。クラスや属性を持つdivやtdなどで、HTMLや色、値を取得することができます。AngularJS、あなたはあなた自身がこのように考えているのを見つけるでしょう:私が扱っているモデルは何ですか、私はモデルの値をtrueに設定します。この値を反映するビューがチェックボックスなのか、td要素の中にあるのかを気にする必要はありません(jQueryでよく考えなければならない詳細事項)。AngularJSでDOMを操作すると、ディレクティブとフィルターを追加することになります。これは有効なHTML拡張機能と見なすことができます。AngularJSでもう1つ経験することがあります。jQueryではjQuery関数を頻繁に呼び出します。AngularJSではAngularJSが関数を呼び出します。AngularJSは「操作方法を教えてくれます」が、その利点は価値があります。通常AngularJSが何を望んでいるのか、またはAngularJSがあなたがあなたの関数を提示することを要求する方法を学ぶことを意味し、それはそれに応じてそれを呼ぶでしょう。これはAngularJSをライブラリではなくフレームワークにするものの1つです。Samuelそれらはとてもいいですが長い答えです。私の経験をまとめると:コントローラやプロバイダ(サービス、工場など)はデータモデルを変更するためのもので、HTMLではありません。HTMLとディレクティブはレイアウトとモデルへのバインディングを定義します。コントローラ間でデータを共有する必要がある場合は、サービスまたはファクトリを作成します。これらはアプリケーション全体で共有されるシングルトンです。HTMLウィジェットが必要な場合は、ディレクティブを作成してください。データがあり、HTMLを更新しようとしている場合は、停止してください。モデルを更新して、HTMLがモデルにバインドされていることを確認してください。DanjQueryはDOM操作ライブラリです。*フレームワークです。MVCツールは依然としてカテゴリライブラリに属します)。フレームワークなので、コードをホストし、何をいつ呼び出すべきかについての決定権を持ちます。AngularJS自体には、その中にjQuery-liteエディションが含まれています。そのため、基本的なDOMの選択/操作については、実際にはjQueryライブラリを含める必要はありません(ネットワーク上で実行するために多くのバイトを節約できます)。AngularJSには、DOM操作および再利用可能なUIコンポーネントの設計に関する「ディレクティブ」の概念があります。したがって、DOM操作に関連することを行う必要があると感じるときはいつでも使用する必要があります.AngularJSにはある程度の学習曲線があります(jQuery以上:-)。jQueryをバックグラウンドにしている開発者にとって、私の最初のアドバイスは「AngularJSのような豊富なフレームワークにジャンプする前に、JavaScriptをファーストクラス言語として学ぶこと」です。私は上記の事実を難しい方法で学んだ。Dubey彼らはリンゴとオレンジです。あなたはそれらを比較したくありません。それらは2つの異なるものです。liteが組み込まれているため、本格的なjQueryバージョンを含めなくても基本的なDOM操作を実行できます。jQueryはすべてDOM操作に関するものです。それはそうでなければあなたが対処しなければならないすべてのクロスブラウザの痛みを解決しますが、それはあなたがあなたのアプリをAngularJSのようなコンポーネントに分割することを可能にするフレームワークではありません。AngularJsのいいところは、ディレクティブでDOM操作を分離/分離できることです。ng-clickなど、すぐに使える組み込みディレクティブがあります。すべてのビューロジックまたはDOM操作を含む独自のカスタムディレクティブを作成できるので、ビジネスロジックの面倒を見るべきであるコントローラまたはサービスに混在するDOM操作コードを作成する必要がなくなります。一つ、ディレクティブがあります。これはあなたがどんなDOM要素にも付けることができる属性であり、あなたのjQueryがAngularJsコンポーネントと衝突することやそのアーキテクチャとめちゃくちゃになることを心配することなく、その中のjQueryを使うことができます。私が参加したミートアップから聞いたところ、Angularの創設者の一人は、DOM操作を切り離すために一生懸命働いていたので、それらを元に戻そうとしないでください。Jabber:エピソード#32を聴いてください。彼らは他のJavaScriptの背景、特にjQueryからAngularJSに来ることがどのようなものかについて多くのことを話します。Angularでほとんど考えられなかったことの1つは、逃げることができるように、どのようにエスケープハッチをたくさん用意するかです。これを回避する方法を考え出す。私たちにとって、答えは「指令」と呼ばれるものです。JavaScriptになります。あなたが望むことは何でもできます。:ディレクティブは、テンプレート内でこの特定の要素またはこのCSSに遭遇したときにそれを通知するコンパイラへの命令であると考えてください。このようなコードを保持し、そのコードは担当しますDOMツリーの要素とその要素の下にあるすべての要素.エピソード全体の写しは、上記のリンクから入手できます。*フレームワークです。ディレクティブの中で、あなたが知っていて本当に気に入っている本当に素晴らしいことをすべてjQueryでやることはできます。「jQueryで今までしたことをどのように行うのですか」という問題ではありません。「jQueryで以前に行ったことのすべてをAngularJSに追加するにはどうすればよいですか」という問題です。それは本当に2つの非常に異なる心の状態です。AngularJSだったので、この質問は興味深いと思います。私はjQueryを学んだことは一度もありません。私は何も学ぶ必要がないので、それは良いことだと思います。"AngularJSの方法"を探しています。したがって、私はこの質問に対する私の答えが本質的に「jQueryを学んだことがない人のように考える」ことに煮詰まり、jQueryを直接組み込もうとする誘惑を避けることになると思います。ZamirAngularJSとjQuery:AngularJとJQueryは、JQLiteの機能を除いて、すべてのレベルでまったく異なります。AngularJのコア機能を学び始めると、それがわかります(以下で説明します)。AngularJsは、独立したクライアントサイドアプリケーションの構築を提供するクライアントサイドフレームワークです。JQueryはDOMを中心としたクライアントサイドのライブラリです。あなたがあなたのUIにいくつかの変更が欲しいならモデルデータ変更の観点から考えてください。データを変更すると、UIは自動的に再描画されます。Directivesを通して扱われるべきでない限り、あなたはDOMを毎回遊ぶ必要はありません。この質問に答えるために、私はAngularJSとの最初のエンタープライズアプリケーションに関する私の経験を共有したいと思います。これらは、jQueryの考え方を変え始めるところでAngularが提供する最も優れた機能であり、ライブラリではなくフレームワークのようにAngularが得られます。双方向のデータバインディングは素晴らしいです。私はすべての機能を持つグリッドを持っていたUPDATE、DELTE、INSERT。ng-repeatを使用してグリッドのモデルをバインドするデータオブジェクトがあります。削除と挿入のために単純なJavaScriptコードを1行書くだけで済みます。グリッドモデルが即座に変わると、gridは自動的に更新されます。更新機能はリアルタイムです。あなたは素晴らしい気分だよ!再利用可能な指令はスーパーです。1箇所に指令を記述して、アプリケーション全体で使用します。ああ、神様!!!ページング、正規表現、検証などにこれらのディレクティブを使用しました。どのように使用するかは実装次第ですが、リクエストをルーティングしてHTMLとコントローラを指定するには、ほんの数行のコードで済みます(JavaScript)。コントローラは素晴らしいです。コントローラは独自のHTMLの面倒を見ますが、この分離は一般的な機能にも同様に有効です。マスターHTMLのボタンをクリックして同じ関数を呼び出したい場合は、各コントローラに同じ関数名を書いて個々のコードを書いてください。アプリにオーバーレイを表示するなど、他にも似たような機能がたくさんあります。(XHR)リクエストを処理します。完全なフレームワークであることはAngularJSをRESTfulアーキテクチャで動作させるのに最適です。APIを呼び出すのはとても簡単です。:サービスを使用して一般的なコードを記述し、コントローラ内のコードを少なくします。サービスは、コントローラ間で共通の機能を共有するために使用できます。:Angularは、Angularディレクティブを使用してHTMLディレクティブを拡張しました。html内に式を書き、実行時にそれらを評価します。独自のディレクティブとサービスを作成して、追加の作業なしで別のプロジェクトで使用します。Osmaniによる、異なるJavaScriptデザインパターンの紹介として。この回答で使用されている用語は、上記のリンクされたドキュメントから取られています。私は、受け入れられた答えで本当にうまく言い表されたことを繰り返すつもりはありません。代わりに、この回答は、AngularJS(および他のライブラリ)を強化する理論的背景にリンクしています。*フレームワーク)は、さまざまなJavaScriptデザインパターンの多くを組み立てる1つの複雑なフレームワークであることがすぐにわかります。(1)ネイティブJavaScriptコードと(2)1つのグローバルフレームワークに飛び込む前に、これらのパターンごとに個別の小さなライブラリ。これにより、フレームワークがどの重要な問題に取り組んでいるかをよりよく理解することができました(個人的に問題に直面しているため)。(これはGoogle検索リンクです)。これはライブラリではありませんが、アプリケーションプログラミングの前提条件です。注意:このリストは完全ではなく、「最高のライブラリ」でもありません。それらはたまたま私が使用したライブラリです。これらのライブラリには、より多くのパターンも含まれています。言及されているものは、主な焦点またはオリジナルの意図にすぎません。このリストから何かが足りないと感じたら、コメントでそれを言及してください、そして私はそれを喜んで追加します。Tyblitz実際、AngularJSを使用しているのであれば、もうjQueryは必要ありません。AngularJS自体には、バインディングとディレクティブがあります。これは、jQueryでできることのほとんどに代わる非常に優れた「置き換え」です。使ってモバイルアプリケーションを開発しています。私が必要としたjQueryからの唯一のものはSelectorです。グーグルでは、私はそこにスタンドアロンのjQueryセレクタモジュールがあることがわかります。Selectorの力でAngularJSを使ってウェブサイトをすぐに始めるのを手助けする小さなコードスニペットを作ることにしました。Tranページをよりレスポンシブにするために、イベントハンドラを「パッシブ」としてマークすることを検討してください。