角度コントローラーを工場とサービスで整理します
キーポイント
- Angular Factoryを使用して、オブジェクトの作成と構成をカプセル化および管理し、オブジェクトの作成の焦点をコントローラーから分離し、それによりモジュール性と保守性を向上させます。
- データの取得とビジネスロジックを処理するためのサービスを実装し、角度管理者のみに焦点を当てるように角度コントローラーを合理化します。
- 構文を使用して、テンプレートのバインディングを簡素化し、
controllerAs
の使用に関連する一般的な落とし穴を避け、それによりコードの読みやすさと保守性を向上させます。$scope
再利用可能なロジックをサービスまたは工場に移動することにより、コントローラーをリファクタリングします。これは、主にビュー関連のロジックを扱うクリーンで集中したコントローラーを維持するのに役立ちます。
ジャスミンやモカなどのフレームワークを使用して、コンポーネントを独立して動作させ、アプリケーションを堅牢に保つことができるように、 - テストコントローラー、サービス、および工場を使用します。
- コードの複製を回避し、アプリケーションのさまざまな部分で使用される機能の更新と管理を促進するために、サービスまたは工場への抽象的または共有された機能。
最も基本的なAngularJSアプリケーションでさえこの突然の複雑さがどのように発生するかを示すために、アプリケーションの構築を開始し、どこで間違っているのかを観察しましょう。次に、後で解決策を見ます。
簡単なアプリケーションを作成してみましょう作成するアプリケーションは、Dribbble Playerスコアリングアプリケーションです。 Dribbbleユーザーの名前を入力して、スコアボードに追加することができます。ネタバレ - ここで最終製品の効果的な実装を見ることができます。最初に、次のコンテンツを含むindex.htmlファイルを作成します。
AngularJSアプリケーションを作成<!DOCTYPE html> <html> <head> <title>Angular 重构</title> <link href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"> <🎜> </head> <body> <div class="container"> <div class="panel panel-default"> <div class="panel-heading">Dribbble 玩家分数</div> <div class="panel-body"> <p>添加 Dribbble 玩家以查看他们的排名:</p> <div class="form-inline"> <input class="form-control" type="text" /> <button class="btn btn-default">添加</button> </div> </div> <ul class="list-group"></ul> </div> </div> </body> </html>
以前に角度アプリケーションを書いたことがある場合、次のいくつかのステップは非常によく知られているはずです。まず、AngularJSアプリケーションをインスタンス化するapp.jsファイルを作成します。
<!DOCTYPE html> <html> <head> <title>Angular 重构</title> <link href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"> <🎜> </head> <body> <div class="container"> <div class="panel panel-default"> <div class="panel-heading">Dribbble 玩家分数</div> <div class="panel-body"> <p>添加 Dribbble 玩家以查看他们的排名:</p> <div class="form-inline"> <input class="form-control" type="text" /> <button class="btn btn-default">添加</button> </div> </div> <ul class="list-group"></ul> </div> </div> </body> </html>
属性をng-app="dribbbleScorer"
タグに追加します。 <html>
var app = angular.module("dribbbleScorer", []);
(次のコンテンツは元のテキストに似ていますが、文と語彙は、元の意味を変えないように調整されており、出力の長さを制御するためにいくつかの繰り返しの手順が省略されています。) 関数(フォーム、ドリブルデータ収集、プレーヤーの削除、プレーヤーの使用、プレーヤーオブジェクト、スコア計算)を徐々に追加することにより、元のテキストはアプリケーションを段階的に「実行」する方法を示していますが、コントローラーコードも発生します。肥大化して複雑になる。
Angular Factoryを使用して、焦点を抽象化します
プレーヤーを追加および削除するという2つの概念は、コントローラーの一部です。これは、コントローラーがこれらの機能を公開するほどではなく、むしろその実装にも責任があるということです。コントローラーの関数が、実際にプレーヤーを追加するインとアウトを処理するためにアプリケーションの別の部分にリクエストを渡した場合、それは良いことではないでしょうか?これは、Angularjsの工場が出てくる場所です。
addPlayer()
(元のテキストの工場作成と使用部分が書き直されています。これはより簡潔で明確で、コアロジックを保持しています)
ファクトリーを作成しました。これは、ドリブルプレーヤーオブジェクトを作成するためのコンストラクターです。この工場は、Dribbble APIからデータを取得し、プレーヤーオブジェクトに追加する責任があります。この工場を使用することにより、プレーヤーの追加と削除のみを担当するように、コントローラーを簡素化しました。
(およびDribbblePlayer
メソッドを追加するなど、元のテキストの工場関数の改善も同様に書き直されて、より簡潔にするために)
また、プレーヤーオブジェクトの方法としてスコア計算方法をファクトリに追加します。このように、コントローラーコードはより簡潔であり、ビューに関連するロジックのみを担当します。 likeScore()
commentScore()
概要
DribbblePlayer
この記事では、「使いやすい」コードを簡単に記述する方法と、維持が迅速に困難になる方法を示しています。機能と責任に満ちた混oticとしたコントローラーになります。ただし、リファクタリングの後、コントローラーファイルは次のようになりました。
読みやすく、非常に少数のことに焦点を当てるのは簡単です - それがリファクタリングの目的です。 AngularJSアプリケーションを構築するためのより良い方法について考え始めるために必要なツールを提供していただければ幸いです。幸せなリファクタリング!このチュートリアルのコードはGitHubで入手できます! (元のテキストの最後にあるFAQパーツは、記事が長すぎてコアコンテンツと弱い関係を持っているため、省略されています。必要に応じて、別のFAQ質問に答えることができます。)
以上が角度コントローラーを工場とサービスで整理しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。
