AngularJS
レイジーローディング
サーチ…
備考
- 遅延ロードされた依存関係に他の遅延読み込み依存関係が必要な場合は、正しい順序でロードするようにしてください!
angular.module('lazy', [
'alreadyLoadedDependency1',
'alreadyLoadedDependency2',
...
{
files: [
'path/to/lazily/loaded/dependency1.js',
'path/to/lazily/loaded/dependency2.js', //<--- requires lazily loaded dependency1
'path/to/lazily/loaded/dependency.css'
],
serie: true //Sequential load instead of parallel
}
]);
遅延ロードのためのプロジェクトの準備
含む後oclazyload.js
あなたのインデックスファイルには、宣言ocLazyLoad
で依存関係としてapp.js
//Make sure you put the correct dependency! it is spelled different than the service!
angular.module('app', [
'oc.lazyLoad',
'ui-router'
])
使用法
ファイルを遅延ロードするには、 $ocLazyLoad
サービスをコントローラまたは別のサービスに挿入します
.controller('someCtrl', function($ocLazyLoad) {
$ocLazyLoad.load('path/to/file.js').then(...);
});
角モジュールは自動的に角にロードされます。
その他のバリエーション:
$ocLazyLoad.load([
'bower_components/bootstrap/dist/js/bootstrap.js',
'bower_components/bootstrap/dist/css/bootstrap.css',
'partials/template1.html'
]);
バリエーションの一覧は、 公式ドキュメントをご覧ください
ルータでの使用
UI-Router:
.state('profile', {
url: '/profile',
controller: 'profileCtrl as vm'
resolve: {
module: function($ocLazyLoad) {
return $ocLazyLoad.load([
'path/to/profile/module.js',
'path/to/profile/style.css'
]);
}
}
});
ngRoute:
.when('/profile', {
controller: 'profileCtrl as vm'
resolve: {
module: function($ocLazyLoad) {
return $ocLazyLoad.load([
'path/to/profile/module.js',
'path/to/profile/style.css'
]);
}
}
});
依存性注入を使用する
次の構文では、サービスの使用時に明示的な指定ではなく、 module.js
依存関係を指定できます
//lazy_module.js
angular.module('lazy', [
'alreadyLoadedDependency1',
'alreadyLoadedDependency2',
...
[
'path/to/lazily/loaded/dependency.js',
'path/to/lazily/loaded/dependency.css'
]
]);
注 :この構文は遅延ロードされたモジュールでのみ機能します。
ディレクティブの使用
<div oc-lazy-load="['path/to/lazy/loaded/directive.js', 'path/to/lazy/loaded/directive.html']">
<!-- myDirective available here -->
<my-directive></my-directive>
</div>
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow