在Koa中使用多个视图目录

我正在使用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`,{map: { handlebars: 'handlebars' }}))
    app.use(views(`${__dirname}/B/views`,{map: { handlebars: 'handlebars' }}))

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

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

fc3svsae86 回答:在Koa中使用多个视图目录

我已经检查了源代码,使用<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="toggle"> <div class="toggle-trigger">Question 1</div> <div class="toggle-container"> Ut fringilla varius ipsum,id faucibus orci aliquet id. Donec ipsum nibh,placerat vel efficitur sed,finibus eget velit. Sed ultrices bibendum fringilla. Donec diam felis,scelerisque nec fermentum in,consectetur eget mi. Nulla elementum nunc a auctor gravida. Suspendisse arcu ipsum,rutrum a scelerisque sit amet,ultrices aliquet leo. Praesent at ex vitae arcu tempor tincidunt quis non magna. Integer fermentum eros et tempor feugiat. Phasellus tincidunt sem ac nunc laoreet,ultricies porttitor arcu ullamcorper. Nam vitae justo congue,molestie mi elementum,vehicula est. Maecenas vel magna condimentum,varius risus vitae,pretium leo. Nunc blandit est non velit feugiat,a luctus magna blandit. Curabitur pulvinar euismod elementum. Aenean consectetur odio magna,in lacinia lacus lacinia eu. In aliquam ex quis lectus ultricies lacinia. Donec lobortis ex metus,et consequat lorem aliquet non. <div class="extra">Extra information like <a href="#">Links</a></div> </div> </div> <div class="toggle"> <div class="toggle-trigger">Question 2</div> <div class="toggle-container"> Ut fringilla varius ipsum,et consequat lorem aliquet non. <div class="extra">Extra information like <a href="#">Links</a></div> </div> </div> <div class="toggle"> <div class="toggle-trigger">Question 3</div> <div class="toggle-container"> Ut fringilla varius ipsum,et consequat lorem aliquet non. <div class="extra">Extra information like <a href="#">Links</a></div> </div> </div>软件包似乎无法实现。

作为一种快速且肮脏的解决方法,您可以尝试设置中间件,如下所示:

$(".toggle-trigger").on("click",function() {
  var content = $(this).parent().find(".toggle-container");
  var title = $(this).parent().find(".toggle-trigger");

  if ($(content).hasClass("open")) {
    $(content).slideUp(500).removeClass("open");
    $(title).removeClass("open");

  } else {
    $(".toggle-container.open").slideUp(500).removeClass("open"); //will close all others
    $(".toggle-trigger.open").removeClass("open"); //add this line
    $(content).slideDown(500).addClass("open");
    $(title).addClass("open");
  }
});

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

koa-views

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

本文链接:https://www.f2er.com/3141584.html

大家都在问