アセットとは、外部からアクセスできるようにしたいサーバー上の静的ファイル(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'を定義した場合、そのルートが優先されます。