javascript - 使用带有 NodeJS 的 Handlebars 进行模板化以包含布局

标签 javascript node.js express handlebars.js

app.js

var exphbs = require('express-handlebars');
app.engine('handlebars', exphbs({defaultLayout: 'layout'}));
app.set('view engine', 'handlebars');
app.use('/catalog', require('./routes/catalog'));

所以在我的路由文件夹中,我有一个名为catalog的文件夹,然后在其中我有catalog.js。

在catalog.js中我这样做

var express = require('express');
var router  = module.exports = express.Router();
router.get('/', function(req, res) {
        res.render('catalog/index');
});

当我访问 http://localhost:3000/catalog 时效果很好但当我尝试运行 http://localhost:3000/catalog/ 时,它被排除在布局之外知道为什么吗?

最佳答案

有一个 npm 包(connect-slashes)会安装一些中间件,这些中间件会在没有斜杠的 URL 上添加斜杠。此过程称为 URL 规范化。

这更好,因为您不会为“catalog”和“catalog/”网址显示类似的内容,这对 SEO 不利(重复内容惩罚)。

此处的软件包详细信息:

https://www.npmjs.com/package/connect-slashes

从命令行:

npm install connect-slashes --save

关于javascript - 使用带有 NodeJS 的 Handlebars 进行模板化以包含布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34453048/

相关文章:

javascript - 无法找到与正则表达式模式匹配的字符串

javascript - 使用 Node/gm 将 SVG 字符串输出为 PNG

javascript - 通过javascript中的对象数组过滤

node.js - 在 github 页面上托管我的 MEAN 堆栈 Web 应用程序

javascript - 递归 - Node 内存不足

javascript - 在 document.ready() 之后加载 jquery 函数

javascript - Node.JS Express Promise 问题

javascript - 从 promise 中返回一个字符串值

node.js - 从 Node 使用 TypeScript 编译器

javascript - 出现错误无法读取未定义的属性 'equals'