From 2cb1e8ffc4b4b1c4fb48fb977f3063231e98f5bc Mon Sep 17 00:00:00 2001 From: Nobuo Kihara Date: Wed, 18 Feb 2015 07:47:51 +0900 Subject: [PATCH 1/2] docs/guide-ja/structure-assets.md - updated [ci skip] --- docs/guide-ja/structure-assets.md | 52 +++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/docs/guide-ja/structure-assets.md b/docs/guide-ja/structure-assets.md index 62048bc431..f90dc438df 100644 --- a/docs/guide-ja/structure-assets.md +++ b/docs/guide-ja/structure-assets.md @@ -588,3 +588,55 @@ yii asset assets.php config/assets-prod.php > Info|情報: `asset` コマンドを使うことは、アセットの結合・圧縮のプロセスを自動化する唯一の選択肢ではありません。 優秀なタスク実行ツールである [grunt](http://gruntjs.com/) を使っても、同じ目的を達することが出来ます。 + + +### アセットバンドルをグループに分ける + +場合によっては、全ての JavaScript と CSS のファイルを一つに圧縮することが良い選択肢にならないことがあります。 +例えば、あなたのアプリケーションがフロントエンドとバックエンドに分れていて、それぞれが自分専用の JavaScript と CSS のファイルを持っていると想像して下さい。 +このような場合に全てのファイルを一つに結合することは、余分なネットワークトラフィックを発生させるため、合理的ではありません。 +フロントエンドにアクセスするときに、バックエンドのファイルのソースコードもロードされることになります。 +逆の場合もまた同じです。 + +`asset` コマンドを実行するときに、二つ以上のターゲットバンドルを指定して、バンドルをグループ化することが出来ます。 +どのバンドルをどのグループに圧縮するかを指定するためには、ターゲットバンドルの構成情報の `depends` キーを使います。 +一つに結合すべきバンドルのクラス名を `depends` キーに列挙するだけで良いのです。 +ターゲットバンドルのうちの一つは、`depends` キーを空にしておくことが出来ます。 +そうすれば、そのターゲットバンドルが残りのソースバンドルの全てを含むことになります。 + +そのような構成情報は次のようなものになります。 + +```php +return [ + ... + // 出力されるバンドルをグループ化する + 'targets' => [ + 'allShared' => [ + 'js' => 'js/all-shared-{hash}.js', + 'css' => 'css/all-shared-{hash}.css', + 'depends' => [ + // バックエンドとフロントエンドで共有される全てのアセットを含める + 'yii\web\YiiAsset', + 'app\assets\SharedAsset', + ], + ], + 'allBackEnd' => [ + 'js' => 'js/all-{hash}.js', + 'css' => 'css/all-{hash}.css', + 'depends' => [ + // バックエンドだけのアセットを含める + 'app\assets\AdminAsset' + ], + ], + 'allFrontEnd' => [ + 'js' => 'js/all-{hash}.js', + 'css' => 'css/all-{hash}.css', + 'depends' => [], // 残りのアセット全てを含める + ], + ], + ... +]; +``` + +> Note|注意: ソースのアセットバンドルの依存関係に気を付けてください。 + 注意しないと、独立させたはずのターゲットバンドルが実際にはお互いに依存しあっている、ということになり得ます。 From a4cd607e4fa8fb5d12852fa0cdce0bc2c08ff383 Mon Sep 17 00:00:00 2001 From: Nobuo Kihara Date: Thu, 19 Feb 2015 07:53:18 +0900 Subject: [PATCH 2/2] docs/guide-ja updated [ci skip] --- docs/guide-ja/concept-service-locator.md | 27 ++++++++++++++++++++ docs/guide-ja/structure-assets.md | 32 ++++++++++++------------ docs/guide-ja/structure-views.md | 1 - 3 files changed, 43 insertions(+), 17 deletions(-) diff --git a/docs/guide-ja/concept-service-locator.md b/docs/guide-ja/concept-service-locator.md index 0a622cc97d..080e42cbc2 100644 --- a/docs/guide-ja/concept-service-locator.md +++ b/docs/guide-ja/concept-service-locator.md @@ -81,3 +81,30 @@ return [ ]; ``` +コンポーネントが複雑なものである場合に、構成の複雑さを隠蔽する追加のクラスを作成するのは良いアイデアです。 + +```php +class FacebookSDK { + public static function service($config) { + return function() use $config { + // ここでオブジェクトを構築する + return $object; + }; + } +} +``` + +これを次のように使うことが出来ます。 + +```php +return [ + // ... + 'components' => [ + // ... + 'facebook' => FacebookSDK::service([ + 'secret' => 'theverysecret', + // ... + ]), + ], +]; +``` diff --git a/docs/guide-ja/structure-assets.md b/docs/guide-ja/structure-assets.md index f90dc438df..88a0c1e7e0 100644 --- a/docs/guide-ja/structure-assets.md +++ b/docs/guide-ja/structure-assets.md @@ -590,21 +590,16 @@ yii asset assets.php config/assets-prod.php 優秀なタスク実行ツールである [grunt](http://gruntjs.com/) を使っても、同じ目的を達することが出来ます。 -### アセットバンドルをグループに分ける +### アセットバンドルをグループ化する -場合によっては、全ての JavaScript と CSS のファイルを一つに圧縮することが良い選択肢にならないことがあります。 -例えば、あなたのアプリケーションがフロントエンドとバックエンドに分れていて、それぞれが自分専用の JavaScript と CSS のファイルを持っていると想像して下さい。 -このような場合に全てのファイルを一つに結合することは、余分なネットワークトラフィックを発生させるため、合理的ではありません。 -フロントエンドにアクセスするときに、バックエンドのファイルのソースコードもロードされることになります。 -逆の場合もまた同じです。 +直前の項において、全てのアセットバンドルを一つに結合して、アプリケーションで参照されるアセットファイルに対する HTTP リクエストを最小化する方法を説明しました。 +現実には、それが常に望ましいわけではありません。 +例えば、あなたのアプリケーションがフロントエンドとバックエンドを持っており、それぞれが異なる一群の JavaScript と CSS ファイルを使う場合を想像してください。 +この場合、両方の側の全てのアセットバンドルを一つに結合するのは合理的ではありません。 +何故なら、フロントエンドのためのアセットバンドルはバックエンドでは使用されませんから、フロントエンドのページがリクエストされているときにバックエンドのアセットを送信するのはネットワーク帯域の浪費です。 -`asset` コマンドを実行するときに、二つ以上のターゲットバンドルを指定して、バンドルをグループ化することが出来ます。 -どのバンドルをどのグループに圧縮するかを指定するためには、ターゲットバンドルの構成情報の `depends` キーを使います。 -一つに結合すべきバンドルのクラス名を `depends` キーに列挙するだけで良いのです。 -ターゲットバンドルのうちの一つは、`depends` キーを空にしておくことが出来ます。 -そうすれば、そのターゲットバンドルが残りのソースバンドルの全てを含むことになります。 - -そのような構成情報は次のようなものになります。 +上記の問題を解決するために、アセットバンドルをグループ化して、グループごとにアセットバンドルを結合することが出来ます。 +下記の構成情報は、アセットバンドルをグループ化する方法を示すものです。 ```php return [ @@ -631,12 +626,17 @@ return [ 'allFrontEnd' => [ 'js' => 'js/all-{hash}.js', 'css' => 'css/all-{hash}.css', - 'depends' => [], // 残りのアセット全てを含める + 'depends' => [], // 残りの全てのアセットを含める ], ], ... ]; ``` -> Note|注意: ソースのアセットバンドルの依存関係に気を付けてください。 - 注意しないと、独立させたはずのターゲットバンドルが実際にはお互いに依存しあっている、ということになり得ます。 +ご覧のように、アセットバンドルは三つのグループ、すなわち、`allShared`、`allBackEnd` および `allFrontEnd` に分けられています。 +そして、それぞれが適切な一群のアセットバンドルに依存しています。 +例えば、`allBackEnd` は `app\assets\AdminAsset` に依存しています。 +この構成情報によって `asset` コマンドを実行すると、上記の定義に従ってアセットバンドルが結合されます。 + +> Info|情報: ターゲットバンドルのうちの一つについて `depends` の構成を空のままにしておくことが出来ます。 + そのようにすると、他のターゲットバンドルが依存しないために残された全てのアセットバンドルが、このターゲットバンドルに含まれるようになります。 diff --git a/docs/guide-ja/structure-views.md b/docs/guide-ja/structure-views.md index 292468a6f5..f65dafea79 100644 --- a/docs/guide-ja/structure-views.md +++ b/docs/guide-ja/structure-views.md @@ -257,7 +257,6 @@ echo $this->render('report', [ ```php The controller ID is: context->id ?> -?> ``` 通常は「プッシュ」アプローチが、ビューでデータにアクセスする方法として推奨されます。