没有布局的 Express 4 车把渲染
Express 4 handlebars render without layout
Express 4 应用程序中是否有一种方法可以在不使用布局的情况下呈现视图?
我在项目里面有一个layout.hbs。该文件似乎无需在任何地方注册就可以使用,并且对于大多数视图来说都可以,但是如果只需要渲染一个视图怎么办?
假设您使用的是 express-handlebars,您可以在调用 render 方法时指定与 route/controller 不同的布局。要完全摆脱布局,您可以将布局设置为 false
。
router.get('/', function(req, res) {
res.render('home', {layout: false});
});
应该清楚,当您有数据要呈现时,layout
应该只是此类数据的额外 属性
var data = {
layout: false,
var1: var1,
var2: var2
};
res.render('home', data);
如果你不想给布局,你必须指定为 layout: false
。否则应用程序会崩溃。如果需要,您可以进行如下配置。
app.get('/', (req, res, next) => {
res.render('shop', { title: 'My Shop', layout: false })
});
For more congiguration of express-handlebars
如果您使用 app.render()
函数渲染 html。
你很适合 。
正如 express documentation 本身提到的那样,res.render()
方法也在幕后使用 app.render()
方法。
const app = require('express')();
app.set('view engine', 'hbs');
/**
* Render email template with data
*
* @param {String} emailTemplate email template path
* @param {Object} renderParams Render parameters
* @return {Promise} rendered template
*/
async function renderEmail(emailTemplate, renderParams) {
const renderParams = { layout: false, ...otherRenderParams };
return await new Promise((resolve, reject) => {
app.render(emailTemplate, renderParams, function (err, html) {
if (err) return reject(err);
return resolve(html);
});
});
}
这对我有 1 个没有 main.handlebars
布局的页面有效:
- 向数据对象添加布局错误:
object.layout=false;
- 渲染
res.render('page', object);
将 .layout
添加到现有对象可以让您轻松地传递对象数据。
Express 4 应用程序中是否有一种方法可以在不使用布局的情况下呈现视图?
我在项目里面有一个layout.hbs。该文件似乎无需在任何地方注册就可以使用,并且对于大多数视图来说都可以,但是如果只需要渲染一个视图怎么办?
假设您使用的是 express-handlebars,您可以在调用 render 方法时指定与 route/controller 不同的布局。要完全摆脱布局,您可以将布局设置为 false
。
router.get('/', function(req, res) {
res.render('home', {layout: false});
});
应该清楚,当您有数据要呈现时,layout
应该只是此类数据的额外 属性
var data = {
layout: false,
var1: var1,
var2: var2
};
res.render('home', data);
如果你不想给布局,你必须指定为 layout: false
。否则应用程序会崩溃。如果需要,您可以进行如下配置。
app.get('/', (req, res, next) => {
res.render('shop', { title: 'My Shop', layout: false })
});
For more congiguration of express-handlebars
如果您使用 app.render()
函数渲染 html。
你很适合 res.render()
方法也在幕后使用 app.render()
方法。
const app = require('express')();
app.set('view engine', 'hbs');
/**
* Render email template with data
*
* @param {String} emailTemplate email template path
* @param {Object} renderParams Render parameters
* @return {Promise} rendered template
*/
async function renderEmail(emailTemplate, renderParams) {
const renderParams = { layout: false, ...otherRenderParams };
return await new Promise((resolve, reject) => {
app.render(emailTemplate, renderParams, function (err, html) {
if (err) return reject(err);
return resolve(html);
});
});
}
这对我有 1 个没有 main.handlebars
布局的页面有效:
- 向数据对象添加布局错误:
object.layout=false;
- 渲染
res.render('page', object);
将 .layout
添加到现有对象可以让您轻松地传递对象数据。