res.view()HTMLページで応答します。
return res.view(pathToView, locals);
または
return res.view(pathToView);return res.view(locals);return res.view();設定されたビューエンジンを使用して、pathToViewにあるビューテンプレートをHTMLにコンパイルします。pathToViewが指定されていない場合、現在のコントローラーとアクションに基づいて慣例的なビューを提供します。
指定されたlocalsは、設定されたアプリ全体で使用できるローカル変数と、Sailsやビューエンジンからの特定の組み込みローカル変数とマージされ、データとしてビューエンジンに渡されます。
| 引数 | 型 | 詳細 | |
|---|---|---|---|
| 1 | pathToView | アプリのviewsフォルダー(通常はviews/)からの相対パスで、ファイル拡張子(例:.ejs)や末尾のスラッシュを含まない、目的のビューファイルへのパス。デフォルトは"コントローラーの識別子/アクション名"になります。 |
|
| 2 | locals | ビューテンプレートに渡すデータ。これらの明示的に指定されたローカル変数は、Sailsの組み込みローカル変数と、設定されたアプリ全体で使用できるローカル変数にマージされます。 デフォルトは {}です。 |
OvenController.jsのcook()アクションでres.view()を呼び出す、慣例的に構成されたSailsアプリを考えてみましょう。
pathToView引数がない場合、res.view()はコントローラーの識別子(oven)とアクション名(cook)を組み合わせてパスを決定します。
return res.view();
// -> responds with `views/oven/cook.ejs`
明示的なpathToViewを使用して同じビューをロードする方法は次のとおりです。
return res.view('oven/cook');
// -> responds with `views/oven/cook.ejs`
最後に、res.viewをWaterlineクエリと組み合わせて使用する方法を示す、より複雑な例を以下に示します。
// Find the 5 hottest oven brands on the market
Oven.find().sort('heat ASC').exec(function (err, ovens){
if (err) return res.serverError(err);
return res.view('oven/top5', {
hottestOvens: ovens
});
// -> responds using the view at `views/oven/top5.ejs`,
// and with the oven data we looked up as view locals.
//
// e.g. in the view, we might have something like:
// ...
// <% _.each(hottestOvens, function (aHotOven) { %>
// <li><%= aHotOven.name %></li>
// <% }) %>
// ...
});
- このメソッドは**ターミナル**です。つまり、通常、特定のリクエストに対してアプリが実行するコードの最後の行です(したがって、これらのドキュメント全体で
returnの使用を推奨しています)。res.view()はディスクからビューファイルを読み取り、HTMLにコンパイルしてから、クライアントにストリーミングで返します。既にメモリにビューがある場合、またはコンパイルされたHTMLを直接クライアントにストリーミングで返したくない場合は、代わりにsails.hooks.views.render()を使用してください。res.view()は常にビューファイル名の*小文字*バージョンを探します。たとえば、コントローラーがFooBarControllerで、アクションがBazの場合、res.view()はviews/foobar/baz.ejsを見つけようとします。*大文字と小文字を区別する*ファイルシステム(例:Ubuntu Linux)では、ビューが大文字で保存されている場合、ビューの検索時に予期しないエラーが発生する可能性があります。このため、ビューとビューフォルダーは常に小文字で保存することをお勧めします。