アセットとは、外部からアクセスできるようにしたいサーバー上の静的ファイル(js、css、画像など)のことです。Sailsでは、これらのファイルはassets/
フォルダに配置されます。アプリを起動したり、assets/
フォルダにファイルを追加したり、既存のアセットを変更したりすると、Sailsの組み込みアセットパイプラインがこれらのファイルを処理し、非表示のフォルダ(.tmp/public/
)に同期します。
この中間ステップ(
assets/
から.tmp/public/
へのファイルの移動)により、Sailsはクライアントで使用するためのアセットを事前に処理できます。LESS、CoffeeScript、SASS、スプライトシート、Jadeテンプレートなどが該当します。
この.tmp/public
フォルダの内容は、Sailsがランタイム時に実際に提供するものです。これは、Expressの「public」フォルダ、またはApacheなどの他のWebサーバーで慣れているwww/
フォルダとほぼ同等です。
内部的には、SailsはExpressのserve-staticミドルウェアを使用してアセットを提供しています。このミドルウェアは(例:キャッシュ設定の変更など)、/config/http.js
で設定できます。
index.html
ほとんどのWebサーバーと同様に、Sailsはindex.html
の規約に従います。たとえば、新しいSailsプロジェクトにassets/foo.html
を作成した場合、https://#:1337/foo.html
でアクセスできます。しかし、assets/foo/index.html
を作成した場合、https://#:1337/foo/index.html
とhttps://#:1337/foo
の両方でアクセスできます。
静的ミドルウェアはSailsルーターの**後**にインストールされることに注意することが重要です。そのため、カスタムルートを定義していますが、アセットディレクトリに競合するパスを持つファイルもある場合、カスタムルートは静的ミドルウェアに到達する前にリクエストをインターセプトします。たとえば、config/routes.js
ファイルにルートが定義されていない状態でassets/index.html
を作成した場合、それはホームページとして提供されます。しかし、カスタムルート'/': 'FooController.bar'
を定義した場合、そのルートが優先されます。