我想为Pug视图添加自定义模板功能。

为简单起见,我使用一个自定义函数uppercase创建了一个演示文件:

const Koa = require("koa")
const views = require("koa-views")

const app = new Koa()

app.use(
  views(__dirname + "/views", {
    extension: "pug",
    options: {
      helpers: {
        uppercase: str => str.toUpperCase()
      }
    }
  })
)

app.use(ctx => ctx.render("index", { name: "Name1" }))

app.listen(3000)


这是一个巨型简单模板views/index.pug

h1= uppercase(name)

但它不起作用,它会显示以下错误:

  TypeError: /Users/max7z/projects/test/t24__test__koa-views_pug/views/index.pug:1
    > 1| h1= uppercase(name)
      2|

  uppercase is not a function

最佳答案

没有使用Koa,但是最近我在Pug中使用Eleventy.js解决了类似的问题。 Pug文档不是很出色,因此花了一些时间才弄清楚。

我必须使函数成为全局函数,然后在渲染模板时使用globals属性。

例如

global.uppercase = function(str){
  return str.toUpperCase();
}

app.use(
 views(__dirname + "/views", {
 extension: "pug",
 options: {
    globals: ["uppercase"]
   }
 })
)

关于javascript - 如何在Koa项目中为Pug添加自定义模板功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51340490/

10-12 19:27