【问题标题】:Hapi server not able to load public files under different views folderHapi 服务器无法加载不同视图文件夹下的公共文件
【发布时间】:2015-08-16 05:13:40
【问题描述】:

我有一个目录 app/server/views/ 其中所有的玉文件都存在。由于我的应用程序现在开始有更多的玉文件,为了简单和维护,我想到了基于参与者类别构建 app/server/views/ 的结构。比如:

  • app/server/views/admin/task1.jade
  • app/server/views/admin/task2.jade
  • app/server/views/superadmin/task1.jade
  • app/server/views/superadmin/task2.jade
  • app/server/views/user/task1.jade
  • app/server/views/user/task2.jade

如果所有的jade文件都存在于/app/server/views/目录下,我的index.js文件在加载jade文件时没有问题。但是,在按照上述目录格式进行结构化时,我遇到了问题:

server.views({
    engines: 
    {
       jade: require('jade') 
    },
    path: [ __dirname + "/app/server/views/admin", __dirname + "/app/server/views/superadmin", __dirname + "/app/server/views/user" ]
});

使用上面的索引文件,我的玉文件不会加载。

【问题讨论】:

    标签: javascript node.js express pug hapijs


    【解决方案1】:

    我不认为路径可以是一个数组。从文档中,我认为它应该是一个目录。

    path: Path.join( __dirname, 'app/server/views' ) 这样的东西然后从你的控制器调用模板为reply( 'admin/task1', ....)

    如果您可以通过编程方式确定演员的角色并拥有完全相同的代码,那么reply( actorsRole + '/task1' ) 之类的东西应该可以解决问题。

    【讨论】:

    • 我猜回复负责对服务器进行编码并在其中提供选项。但是没有办法重组视图目录。如果 path 可以是一个路径数组,它看起来很乱。
    • 如果你查看文档(请让我知道你使用的是哪个版本,我会给你一个指针),有一些方法可以指定布局、部分和辅助路径,但我从未使用过他们自己。
    • 我正在使用 hapi 版本“~8.4.0”
    • 您将找到文档here。请注意,在 9.x 版本中,视图有自己的插件,称为 vision(但该文档仍然适用)。你能解释一下为什么你认为我的回答中描述的那样混乱吗?
    • 我的意思是,如果路径不能是数组,那么事情看起来会很乱,因为视图文件夹不会被组织。现在我可以接受你建议的替代方法。谢谢!
    猜你喜欢
    • 2019-01-19
    • 2017-07-06
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 2015-10-30
    • 2018-04-07
    • 1970-01-01
    相关资源
    最近更新 更多