EJS не отображает оператор if / else - PullRequest
0 голосов
/ 28 сентября 2019

До того, как я добавил оператор if, все работает отлично.

Но после того, как я добавил оператор if, я обнаружил, что EJS не отображает его.

app.js

const express = require('express');
const http = require('http');
const app = express();
const session = require('express-session');

const server = http.createServer(app);
const routes = require('./routes');

app.use(express.static(__dirname + '/public'));
app.use('/', routes);

rout.js

const express = require('express');
const routes = express.Router();

const fs = require('fs');
const ejs = require('ejs');

var index = fs.readFileSync(__dirname + '/pages/index.ejs', 'utf-8');
var head = fs.readFileSync(__dirname + '/pages/head.ejs', 'utf-8');
var nav = fs.readFileSync(__dirname + '/pages/nav.ejs', 'utf-8');
var partials = {head, nav}

routes.get('/', function(req, res) {
    var data = ejs.render(index, partials);
    res.send(data);
});

index.ejs

<!DOCTYPE html>
<html lang="en">

<head>

  <%- head %>

  <title>QA Engine Index</title>

</head>

<body id="page-top">

  <%- nav %>

nav.ejs (часть)

    <% if (true) { %>
      <ul class="navbar-nav ml-auto ml-md-0 btn-toolbar" role="btn-toolbar">
        <button onclick="location.href='/register'" type="button" class="navbar-btn ml-md-0 btn btn-primary mr-2">Register</button>
        <button onclick="location.href='/login'" type="button" class="navbar-btn ml-md-0 btn btn-primary mr-2">Login</button>
      </ul>
    <% } else { %>

    <% } %>

На рисунке изображена панель навигациивыглядит после добавления оператора if.

navbar

1 Ответ

0 голосов
/ 28 сентября 2019

Я добавил

nav = ejs.render(nav);

и решил проблему.

Проблема в том, что nav.ejs не отображается до того, как я использую его для отображения других страниц.

...