在Koa中使用多个视图目录

问题描述 投票:1回答:1

我正在使用NodeJS和Koa视图以模块化方式创建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 /视图,(我知道它正在执行第一个视图,并认为它将在其中找到B的视图),所以有一种方法可以使用多个视图文件夹?

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

node.js handlebars.js koa
1个回答
0
投票

koa-views封装似乎不可能。

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

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

然后调用具有实际模板相对路径的render方法:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.