express-handlebars 助手不显示 return 值
express-handlebars helper doesnt display return value
我尝试将自己的辅助方法注册到 express-handlebars 以在视图和部分中使用它。我的目标是在我的导航部分中创建一个搜索功能。但是我什至没有让我的助手处理我的索引视图。
我想了很多..
App.js
const exphbs = require('express-handlebars')
const helpers = require('./public/helper/hbs-helper');
const express = require('express')
const app = express()
const hbs = exphbs.create({
layoutsDir: path.join(__dirname, 'views/layouts'),
partialsDir: path.join(__dirname, 'views/partials'),
helpers: helpers
})
app.enable('trust proxy')
app.engine('handlebars', hbs.engine)
app.engine('.hbs', exphbs({
extname: '.hbs'
}))
app.set('view engine', 'handlebars')
app.set('views', path.join(__dirname, 'views'))
hbs-helper.js
module.exports = {
sayHello: function(elem) {
return 'hello!'
}
}
index.hbs - 在这里我尝试了一切,但不是同时 ;):
<p>{{sayHello}}</p>
<p>{{#sayHello}}</p>
<p>{{sayHello this}}</p>
- 第一个给了我一个空的 p-tag
- 第二个说"Error: Parse error on line ..."
- 第三个说 "Error: Missing helper: "sayHello""
把"elem"放到函数定义里也没关系,还是不行
我还尝试使用 foo 和 bar 助手实现 https://github.com/ericf/express-handlebars 中的给定示例(不使用 require() 导入它们,我确实做了同样的事情),但它对我不起作用。它从不显示任何 return 值。
你们有什么想法吗?
Vivasaayi 的回答对我有用!
can't register handlebar helpers
只需使用以下代码
helpers.js
let register = function(Handlebars) {
let helpers = {
sayHello: function(elem) {
return 'hello!'
}
};
if (Handlebars && typeof Handlebars.registerHelper === "function") {
for (let prop in helpers) {
Handlebars.registerHelper(prop, helpers[prop]);
}
} else {
return helpers;
}
};
module.exports.register = register;
app.js
const exphbs = require('express-handlebars')
const hbs = exphbs.create({
layoutsDir: path.join(__dirname, 'views/layouts'),
partialsDir: path.join(__dirname, 'views/partials')
})
require("./pathto/helper.js").register(hbs.handlebars);
我尝试将自己的辅助方法注册到 express-handlebars 以在视图和部分中使用它。我的目标是在我的导航部分中创建一个搜索功能。但是我什至没有让我的助手处理我的索引视图。
我想了很多..
App.js
const exphbs = require('express-handlebars')
const helpers = require('./public/helper/hbs-helper');
const express = require('express')
const app = express()
const hbs = exphbs.create({
layoutsDir: path.join(__dirname, 'views/layouts'),
partialsDir: path.join(__dirname, 'views/partials'),
helpers: helpers
})
app.enable('trust proxy')
app.engine('handlebars', hbs.engine)
app.engine('.hbs', exphbs({
extname: '.hbs'
}))
app.set('view engine', 'handlebars')
app.set('views', path.join(__dirname, 'views'))
hbs-helper.js
module.exports = {
sayHello: function(elem) {
return 'hello!'
}
}
index.hbs - 在这里我尝试了一切,但不是同时 ;):
<p>{{sayHello}}</p>
<p>{{#sayHello}}</p>
<p>{{sayHello this}}</p>
- 第一个给了我一个空的 p-tag
- 第二个说"Error: Parse error on line ..."
- 第三个说 "Error: Missing helper: "sayHello""
把"elem"放到函数定义里也没关系,还是不行
我还尝试使用 foo 和 bar 助手实现 https://github.com/ericf/express-handlebars 中的给定示例(不使用 require() 导入它们,我确实做了同样的事情),但它对我不起作用。它从不显示任何 return 值。
你们有什么想法吗?
Vivasaayi 的回答对我有用! can't register handlebar helpers 只需使用以下代码
helpers.js
let register = function(Handlebars) {
let helpers = {
sayHello: function(elem) {
return 'hello!'
}
};
if (Handlebars && typeof Handlebars.registerHelper === "function") {
for (let prop in helpers) {
Handlebars.registerHelper(prop, helpers[prop]);
}
} else {
return helpers;
}
};
module.exports.register = register;
app.js
const exphbs = require('express-handlebars')
const hbs = exphbs.create({
layoutsDir: path.join(__dirname, 'views/layouts'),
partialsDir: path.join(__dirname, 'views/partials')
})
require("./pathto/helper.js").register(hbs.handlebars);