Sails において、ビューとは、サーバー側で HTML ページにコンパイルされるマークアップテンプレートのことです。ほとんどの場合、ビューは、例えばホームページを表示するなど、受信した HTTP リクエストへのレスポンスとして使用されます。
ごくまれに、バックエンドコードで使用するために、ビューを直接 HTML 文字列にコンパイルすることもできます(
sails.renderView()
を参照)。例えば、HTMLメールを送信したり、レガシーAPIで使用するための大きなXML文字列を構築したりする場合にこのアプローチを使用できます。
デフォルトでは、Sailsは EJS(Embedded Javascript)をビューエンジンとして使用するように設定されています。EJSの構文は非常に一般的であり、php、asp、erb、gsp、jspなどを扱ったことがある方なら、すぐに使いこなせるでしょう。
別のビューエンジンを使用したい場合は、多数のオプションがあります。Sails は、Consolidate を介して、Express と互換性のあるすべてのビューエンジンをサポートしています。
ビューはデフォルトで、アプリの views/
フォルダで定義されますが、Sails のすべてのデフォルトパスと同様に、設定可能です。動的な HTML ページをまったく提供する必要がない場合(例えば、モバイルアプリ用の API を構築している場合)、アプリからディレクトリを削除できます。
res
オブジェクトにアクセスできる場所(例えば、コントローラアクション、カスタムレスポンス、ポリシーなど)では、res.view
を使用してビューの 1 つをコンパイルし、結果の HTML をユーザーに送信できます。
また、routes.js
ファイルでビューを直接ルートに接続することもできます。アプリの views/
ディレクトリからのビューへの相対パスを示すだけです。例えば、
{
'get /': {
view: 'pages/homepage'
},
'get /signup': {
view: 'pages/signup/basic-info'
},
'get /signup/password': {
view: 'pages/signup/choose-password'
},
// and so on.
}
ブラウザ向けの Web アプリケーションを構築している場合、ナビゲーションの一部(または全部)がクライアント側で行われることがあります。つまり、ユーザーが移動するたびにブラウザが新しい HTML ページを取得するのではなく、クライアント側のコードがいくつかのマークアップテンプレートをプリロードし、それらをサーバーに直接アクセスすることなくユーザーのブラウザでレンダリングします。
この場合、シングルページアプリケーションをブートストラップするためのいくつかのオプションがあります。
views/publicSite.ejs
のように単一のビューを使用します。このオプションの利点は、Sails のビューエンジンを使用して、サーバーからクライアントでレンダリングされる HTML にデータを直接渡すことができることです。これは、クライアントから AJAX/WebSocket リクエストを送信することなく、ユーザーデータのようなものをクライアント側の JavaScript に取得するための簡単な方法です。assets/index.html
のように assets フォルダにある単一の HTML ページを使用します。この方法では、サーバー側のデータをクライアントに直接渡すことはできませんが、このアプローチの利点は、アプリケーションのクライアント側とサーバー側の部分をさらに分離できることです。assets フォルダにあるものはすべて、(Cloudfront や CloudFlare のような)静的 CDN に移動できるため、プロバイダの地理的に分散されたデータセンターを利用して、コンテンツをユーザーに近づけることができます。