AngularJS 圧縮 JS のヒントの分析

高洛峰
高洛峰オリジナル
2016-12-07 13:57:451115ブラウズ

この記事の例では、JSを圧縮するAngularJSの操作テクニックを説明します。参考までに皆さんと共有してください。詳細は次のとおりです:

ほとんどの Web プロジェクトは、js ファイルのサイズを削減し、トラフィックを節約するために、公開時に js コードを圧縮します。

原理は非常に簡単で、パラメーター、いくつかの変数名、関数の名前を変更することです。

ただし、AngularJS アプリケーションでのこの作業方法には例外があります。

AngularJS の依存関係注入はパラメータ名に基づいて注入されるため、明らかにパラメータの名前を変更するとこのメカニズムが破壊されます。

特別な処理を行わない場合、圧縮(minify)後、実行時にこのようなエラーが発生します

不明なプロバイダ: aProvider<-a

このエラーの正式な説明は次のとおりです: 依存するサービスが見つかりません

つまり、この種の依存関係の挿入によりエラーが発生します。

幸いなことに、AngularJS にはこの問題を処理する標準メカニズムが組み込まれています。

最も簡単で一般的な方法は、関数の代わりに配列を使用することです。例:

.controller(&#39;RegisterCtrl&#39;, [&#39;$scope&#39;, &#39;$interval&#39;, &#39;$timeout&#39;, function ($scope, $interval, $timeout) {
  //do something
}]);

配列の最後の要素は常に関数であり、最初のいくつかのパラメータはすべて文字列であり、この関数のパラメータに対応します。

もう 1 つの形式は、いわゆるアノテーション メソッドです。

var objCtrl = function($scope, $timeout, $interval){
  // do something
}
//给objCtrl函数增加一个$inject属性,它是一个数组,定义了需要被注入的对象
objCtrl.$inject = [&#39;$scope&#39;, &#39;$interval&#39;, &#39;$timeout&#39;];

など

ここでの依存関係注入の形式は、コントローラーに限定されず、DI を必要とするすべてのもの (依存関係注入のためのディレクティブ、ファクトリー、サービスなど) がこれら 2 つの方法を使用できます。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。