[解決済み] AngularJS Strict DIモードのメリットは何ですか?
質問
最近、AngularJSのStrict DIモードというのを知りました。これを使用する目的は何ですか?特にモバイルデバイスで使用すると、パフォーマンスが大幅に向上するのでしょうか?
自分のコードに適用してみましたが、コードを書くときにアノテーションは一切していません。しかし、私のコードはminifyされ、ビルド時にng-annotateされるようになっています。しかし、私のコードに Strict DI モードを追加した後も、"Explicit annotation required" というエラーが発生するのはなぜですか?
どうすればいいですか?
Strict DI Modeは基本的に、実行時にminificationに準拠していないコードが見つかるとエラーを投げます。ただし、そのコードが正しく、論理的・構文的な誤りがない場合もあることに注意してください。
ドキュメントを引用すること。
<ブロッククオートこの属性が app 要素に存在する場合、インジェクタは "strict-di" モードで作成されます。これは、アプリケーションが 明示的な関数アノテーションを使用しない (依存性注入のガイドで説明されているように、(したがって、minificationに適さない)、これらのバグのルートを追跡するために有用なデバッグ情報を支援します。
例えば、このコードは以下の理由でエラーを引き起こします。
($scope, $http, $filter)
を使用して明示的に注入されていません。
$inject
に渡すか、あるいは
.controller(A,B)
メソッドの第2フィールドとして配列を指定します。
angular.module("myApp", [])
// BadController cannot be invoked, because
// the dependencies to be injected are not
// explicitly listed.
.controller("BadController", function($scope, $http, $filter) {
// ...
});
右のスニペットです。
angular.module("myApp", [])
.controller("GoodController1", GoodController1);
GoodController1.$inject = ["$scope", "$http", "$filter"];
function GoodController1($scope, $http, $filter){}
または
angular.module("myApp", [])
.controller("GoodController1",
["$scope", "$http", "$filter", function ($scope, $http, $filter){
//...
}]);
質問に対する答えとしては、これを使うことによってパフォーマンスが大幅に向上することはありません。ただ、minifiable error safenessを与えるだけです。というのも、minificationは変数名を変更するので、例えば
$scope
明示的なアノテーションがない場合
関連
-
[解決済み】Uncaught ReferenceError: angular is not defined - AngularJSが動作しない。
-
[解決済み】Uncaught ReferenceError。Reactが定義されていない
-
[解決済み] テスト
-
[解決済み】Redux TypeError: 未定義のプロパティ 'apply' を読み取れない
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み】JavaScript版sleep()とは?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Failed to load resource: net::ERR_FILE_NOT_FOUND loading json.js
-
[解決済み】webpack-dev-serverにリモート接続すると、「Invalid Host header」というメッセージが表示されます。
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】JavaScriptのgetElementByNameが機能しない
-
[解決済み】React、Uncaught ReferenceError。ReactDOMは定義されていません
-
[解決済み】このオブジェクトの "forEach "はなぜ関数でないのですか?
-
[解決済み】ES6マップオブジェクトをソートすることは可能ですか?
-
[解決済み】Babel NodeJS ES6: SyntaxError: 予期しないトークンのエクスポート
-
[解決済み】'useState' が定義されていない no-undef React
-
[解決済み】Javascript、[オブジェクトHTMLInputElement]を表示中。]