我正在使用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中实现此功能)谢谢。
koa-views
封装似乎不可能。
作为一种快速而肮脏的解决方法,您可以尝试这样设置中间件:
app.use(views(__dirname, { extension: 'handlebars' }, {map: { handlebars: 'handlebars' }}))
然后调用具有实际模板相对路径的render方法:
await ctx.render('B/views/templateName');
但是请注意,这可能是一个糟糕的解决方案,因为基本上也公开了其他非视图文件夹。