res.view()
以 HTML 頁面回應。
return res.view(pathToView, locals);
或
return res.view(pathToView);
return res.view(locals);
return res.view();
使用已配置的視圖引擎來編譯 pathToView
路徑下的視圖範本為 HTML。如果沒有提供 pathToView
,則根據當前的控制器和動作提供預設的視圖。
指定的locals
會與您配置的應用程式全域 locals,以及來自 Sails 和/或您的視圖引擎的某些內建 locals 合併,然後作為資料傳遞給視圖引擎。
參數 | 類型 | 詳細資訊 | |
---|---|---|---|
1 | pathToView | 相對於您的應用程式views 資料夾(通常是 views/ )的所需視圖檔案路徑,不包含檔案副檔名(例如 .ejs ),且不包含尾部的斜線。預設為 "identityOfController/nameOfAction"。 |
|
2 | locals | 要傳遞給視圖範本的資料。這些明確指定的 locals 將會合併到 Sails 的內建 locals 和您配置的應用程式全域 locals。 預設為 {} 。 |
考慮一個常規配置的 Sails 應用程式,在其 OvenController.js
的 cook()
動作中呼叫了 res.view()
。
在沒有 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)上,如果視圖以大寫字母保存,則在定位視圖時可能會導致意外錯誤。因此,建議您始終以小寫形式保存您的視圖和視圖資料夾。