Skip to content

Commit cd4cb5e

Browse files
committed
[best practice] add web-assets.rst
1 parent 070b499 commit cd4cb5e

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

best_practices/web-assets.rst

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
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

Comments
 (0)