helper有什么用?
Handlebars模板中,有{{#if }},{{{{#each }}...表达式代码,但是这些表达式功能往往不够用。
比如:{{#if ("a" == "a")}} 这样的判断是会报错的,因为它并不能解析这个等值判断,所以这时候就需要使用helper。
注册helper
global.ROOT = __dirname
let express = require('express')
let exphbs = require('express-handlebars')
let app = express()
app.engine('.hbs', exphbs({
extname: '.hbs',
defaultLayout: 'main',
layoutsDir: `${global.ROOT}/src/views/layout`,
partialsDir: `${global.ROOT}/src/views/partials`,
helpers: {
isEqual: function(v1, operator, v2) {
if (operator == "==")
return v1 == v2
} if else (operator == "===") {
return v1 === v2
}
}
}
}))
// app.set('views', `${global.ROOT}/src/views`)
app.set('views', path.join(`${global.ROOT}/src`, 'views'))
app.set('view engine', `.hbs`)
// app.engine('html', cons.ejs)
使用isEqual:
{{#if (isEqual "a" "===" "a")}}
......
{{/if}}
另一种引用方法:
{{#isEqual "a" "===" "a"}}
......
{{else}}
......
{{/isEqual}}
对应的helper也有所不同:
helpers: {
isEqual: function(v1, operator, v2, options) {
let res;
if (operator == "==")
res = (v1 == v2)
} if else (operator == "===") {
res = (v1 === v2)
}
if (res) {
options.fn(this)
}
return options.inverse(this)
}
}








网友评论