如何在车把部分中排除文件?

时间:2019-09-07 14:10:34

标签: node.js express handlebars.js

新的和学习的把手我想学习如何创建模板,根据我的研究,这被称为partial,并且我想创建一个不包含文件的把手。在我的Node app.js 中,包括hbs和代码:

// Define paths for Express config
const publicDir = path.join(__dirname, '../public')
const viewsPath = path.join(__dirname, '../templates/views')
const partialsPath = path.join(__dirname, '../templates/partials')

// Setup hbs engine and views location
app.set('view engine', 'hbs')
app.set('views', viewsPath)
hbs.registerPartials(partialsPath)

在局部视图中,我创建一个名为 head.hbs 的文件,并包括:

<!DOCTYPE html>
<html>
  <head>
    <title>{{title}}</title>
    <link rel="icon" href="/img/favicon.png">
    <link rel="stylesheet" href="/css/styles.css">
  </head>

  <body>

但是我很好奇是否有一种方法可以基于文件向部分文档添加条件吗?例如,如果我有一个 404.css ,我希望它仅在404页上呈现,但是当我研究条件时,我发现了built-in helpers和代码:

<!DOCTYPE html>
<html>
  <head>
    <title>{{title}}</title>
    <link rel="icon" href="/img/favicon.png">
    {{#if 404}}
    <link rel="stylesheet" href="/css/404.css">
    {{else}}
    <link rel="stylesheet" href="/css/styles.css">
    {{/if}}
  </head>

看来我可以添加一个变量,如:

404: true

基于“ How can I conditionally add a Handlebars partial to an Assemble layout?”,我认为它将被编码为:

app.get('*', (req, res) => {
  res.status(404).render('404', {
    title: '404',
    404: true
  })
})

,但所有页面均呈现 404.css 。在部分文件中执行文件排除的正确方法是什么?

0 个答案:

没有答案