node.js - Node 和 Handlebars 文件夹结构

标签 node.js handlebars.js

我想稍微更改一下我的文件和文件夹结构,我尝试在网上寻找解决方案,但没有找到任何简单的解决方案,我感觉这件事应该有一个简单的解决方案。

我目前有这个

var expressHandlebars = require('express-handlebars');
app.set('views', __dirname + '/views');
app.engine('hbs', expressHandlebars({extname: 'hbs', defaultLayout: 'main'}));

我的文件夹结构如下

views

-- frontend
---- (doesn't matter, gulp takes care of this for FE).hbs

-- layouts
---- main.hbs

-- index.hbs

我想要存档的是

views

-- frontend
---- (doesn't matter, gulp takes care of this for FE).hbs

-- backend
---- views
------ index.hbs
---- main.hbs

基本上,我希望当我在根目录中打开 View 文件夹时先有前端文件夹,然后有后端文件夹。根目录中的后端文件夹应具有主布局,然后在文件夹中具有特定 View 的不同部分。

我可以添加后端文件夹而不会出现更改问题

app.set('views', __dirname + '/views');

app.set('views', __dirname + '/backend');

但是如何交换 View 文件夹根目录中的布局?

这样做会引发错误,因为他会在 /backend/layouts/main.hbs 中查找布局,而我希望它位于根目录中。

此外,稍后我会通过 res.render('index', data); 来渲染内容。建议的解决方案应该能够执行相同的操作,或者至少 res.render('views/index', data); 因为新 View 将位于文件夹中。

感谢任何帮助或提示。

最佳答案

没关系,在同事的帮助下找到了它。

有一个实际的选项,但我在查看文档时错过了。

app.engine('hbs', expressHandlebars({
                      extname: 'hbs', 
                      defaultLayout: 'main', 
                      layoutsDir: './views/backend'
                  }));

关于node.js - Node 和 Handlebars 文件夹结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33566100/

相关文章:

node.js - JS 文件更改后出现奇怪的 Ionic CLI 错误

javascript - 使用 Handlebars 创建局部

javascript - Handlebars 中的索引运算符说 Unexpected token ,

javascript - 将 Handlebars 数据发送到客户端 javascript

javascript - 如何在带 meteor 的 Handlebars 助手中使用多个参数?

javascript - 需要 Node 中的其他文件

mysql - Node.js 服务器是否应该与 mysql 实例有一个连接?

node.js - 如何在 Neo4j 中创建 Node (如果不存在)

javascript - 使用 jQuery 从 NodeJS 服务器请求数据

templates - Handlebars - 嵌套模板