|
| 1 | +Webアセット |
| 2 | +========== |
| 3 | + |
| 4 | +Webアセットとは、CSSやJavaScript、画像といった、Webサイトのフロントエンドの |
| 5 | +見た目や操作をよくするファイルのことを指します。Symfony開発者は慣習的に、それぞれの |
| 6 | +バンドルの ``Resources/public/`` ディレクトリにアセットを配置してきました。 |
| 7 | + |
| 8 | +.. best-practice:: |
| 9 | + |
| 10 | + アセットは ``web/`` ディレクトリの中に配置しましょう。 |
| 11 | + |
| 12 | +Webアセットを複数の異なるバンドルに跨って分散させてしまうと管理するのが |
| 13 | +大変になります。全てのアプリケーションアセットが一箇所にまとまっていれば、 |
| 14 | +デザイナーの仕事はずっと楽になるでしょう。 |
| 15 | + |
| 16 | +アセットを集中管理することで、テンプレートも恩恵を受けることができます。 |
| 17 | +なぜなら、リンクがより簡潔になるからです。: |
| 18 | + |
| 19 | +.. code-block:: html+jinja |
| 20 | + |
| 21 | + <link rel="stylesheet" href="{{ asset('css/bootstrap.min.css') }}" /> |
| 22 | + <link rel="stylesheet" href="{{ asset('css/main.css') }}" /> |
| 23 | + |
| 24 | + {# ... #} |
| 25 | + |
| 26 | + <script src="{{ asset('js/jquery.min.js') }}"></script> |
| 27 | + <script src="{{ asset('js/bootstrap.min.js') }}"></script> |
| 28 | + |
| 29 | +.. note:: |
| 30 | + |
| 31 | + ``web/`` は公開ディレクトリであり、配置されているものは全て一般にアクセスできる |
| 32 | + ことに気をつけましょう。そのようあな理由から、コンパイルされたwebアセットだけを |
| 33 | + を配置し、Sassのようなソースファイルは配置するべきではありません。 |
| 34 | + |
| 35 | +アセティックを利用する |
| 36 | +------------- |
| 37 | + |
| 38 | +近頃は、単に静的なCSSやJavascriptファイルを作ってテンプレートに埋め込むことは |
| 39 | +おそらくしないでしょう。それどころか、クライアントサイドのパフォーマンスを改善 |
| 40 | +するために、ファイルを結合し圧縮したいと考えることでしょう。 |
| 41 | +また、LESSやSassのようなものを使いたいと思うかも知れません。それらをCSSファイル |
| 42 | +に変換するためには何らかの方法が必要です。 |
| 43 | + |
| 44 | +GruntJSのような(PHPではない)ピュアフロントエンドツールを含めて、これらの問題を |
| 45 | +解決するためたくさんのツールが存在しています。 |
| 46 | + |
| 47 | +.. best-practice:: |
| 48 | + |
| 49 | + GruntJSのようなフロントエンドツールに満足していないなら、Asseticを使って |
| 50 | + webアセットを結合し圧縮しましょう。 |
| 51 | + |
| 52 | +`Assetic`_ は、LESSやSassやCoffeScriptといった多くのフロントエンドツールで |
| 53 | +開発されたアセットをコンパイルすることができるAssetマネージャです。 |
| 54 | +Asseticで全てのアセットを結合するには、1つのTwigタグで全てのアセットを |
| 55 | +囲みます。 |
| 56 | + |
| 57 | +.. code-block:: html+jinja |
| 58 | + |
| 59 | + {% stylesheets |
| 60 | + 'css/bootstrap.min.css' |
| 61 | + 'css/main.css' |
| 62 | + filter='cssrewrite' output='css/compiled/all.css' %} |
| 63 | + <link rel="stylesheet" href="{{ asset_url }}" /> |
| 64 | + {% endstylesheets %} |
| 65 | + |
| 66 | + {# ... #} |
| 67 | + |
| 68 | + {% javascripts |
| 69 | + 'js/jquery.min.js' |
| 70 | + 'js/bootstrap.min.js' |
| 71 | + output='js/compiled/all.js' %} |
| 72 | + <script src="{{ asset_url }}"></script> |
| 73 | + {% endjavascripts %} |
| 74 | + |
| 75 | +フロントエンドベースのアプリケーション |
| 76 | +--------------------------- |
| 77 | + |
| 78 | +近年、APIと通信を行うフロントエンドWEBアプリケーションを開発する場合、AngularJS |
| 79 | +のようなフロントエンド技術を利用することはずいぶん一般的になりました。 |
| 80 | + |
| 81 | +もしこのようなアプリケーションを開発する場合には、BowerやGruntJSのような、 |
| 82 | +その技術で推奨されているツールを使うとよいでしょう。 |
| 83 | +Symfonyバックエンドとは切り離してフロントエンドアプリケーションを開発するべきです。 |
| 84 | +リポジトリを分離したい場合にはなおさらです。 |
| 85 | + |
| 86 | + |
| 87 | +Asseticをもっと知るために |
| 88 | +------------------------ |
| 89 | + |
| 90 | +Assetic は `UglifyCSS/UglifyJSを使う`_ ことでCSSやJavaScriptのサイズを小さくして |
| 91 | +ウェブサイトの高速化を図ることができます。ユーザーが受け取る前に、画像サイズを |
| 92 | +減らすためAsseticを利用して `画像を圧縮する`_ こともできます。全ての利用可能な |
| 93 | +機能を知りたければ `official Assetic documentation`_ を参照してください。 |
| 94 | + |
| 95 | +.. _`Assetic`: http://symfony.com/doc/current/cookbook/assetic/asset_management.html |
| 96 | +.. _`UglifyCSS/UglifyJSを使う`: http://symfony.com/doc/current/cookbook/assetic/uglifyjs.html |
| 97 | +.. _`画像を圧縮する`: http://symfony.com/doc/current/cookbook/assetic/jpeg_optimize.html |
| 98 | +.. _`official Assetic documentation`: https://github.com/kriswallsmith/assetic |
0 commit comments