【问题标题】:Using multiple view directories in Koa在 Koa 中使用多个视图目录
【发布时间】:2019-11-07 21:17:57
【问题描述】:

我正在使用 NodeJS 和 Koa-views 以模块化方式创建一个 Web 应用程序,我有这个文件夹结构:

A/
routes/
models/
views/

B/
routes/
models/
views/

然后在我的 Index.js 中有:

    app.use(views(`${__dirname}/A/views`, { extension: 'handlebars' }, {map: { handlebars: 'handlebars' }}))

我也想使用目录 B 中的视图,所以代码变成:

    app.use(views(`${__dirname}/A/views`, { extension: 'handlebars' }, {map: { handlebars: 'handlebars' }}))
    app.use(views(`${__dirname}/B/views`, { extension: 'handlebars' }, {map: { handlebars: 'handlebars' }}))

但是我收到一条错误消息,指出它找不到 A/B/views,(我知道它正在执行第一个视图并认为它会在那里找到 B 的视图),所以有没有办法使用多个查看文件夹?

(Express 使用 app.set(views, [dir1, dir2 ... ] 但我不知道如何在 Koa 中实现它) 谢谢。

【问题讨论】:

    标签: node.js handlebars.js koa


    【解决方案1】:

    我检查了源代码,koa-views 包似乎不可能。

    作为一种快速而肮脏的解决方法,您可以尝试像这样设置中间件:

    app.use(views(__dirname, { extension: 'handlebars' }, {map: { handlebars: 'handlebars' }}))
    

    然后用实际模板的相对路径调用渲染方法:

    await ctx.render('B/views/templateName');
    

    但请注意,这可能是一个糟糕的解决方案,因为基本上您也会公开其他非视图文件夹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-09
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      相关资源
      最近更新 更多