Шаблоны NodeJS ejs не отображаются с использованием шаблона

Я слежу за сообщениями Стивена Сендерсона о NodeJS. Я преодолел неработающий код из-за изменения версии в Express, как было предложено в этом вопросе. Теперь, когда я получаю доступ к своей странице index.html, используя localhost:13253, она отображает содержимое index.html как есть. Он не отображает его с помощью layout.html. Я проследил это от ejs.js и ejs-middleware, также функции вызываются, но макет не применяется. Код сервера выглядит следующим образом:

var express = require('express'),
app = express(),
api = require("./api/server.js"),
ejsm = require('ejs'),
ejsMiddleware = require('ejs-middleware');

app.use('/api', api);

app.use(ejsMiddleware(__dirname + '/Static', 'html', app));

app.use(express.static(__dirname + '/Static'));

app.listen(process.env.port || 12345);

РЕДАКТИРОВАТЬ:-

//INDEX.HTML

this is homepage

//layout.html

<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Inventify (alpha)</title>
        <script type="text/jscript" src="/scripts/jquery-1.8.3.min.js"></script>
        <script type="text/javascript" src="/scripts/knockout-2.2.0.js"></script>
        <link rel="stylesheet" href="/Styles/app.css"/>
    </head>
    <body>
        <h1 class="site-title">
            <a href="/">Iventify<span class="version">(alpha)</span></a>
        </h1>
        <div class="main-container">
            <%- body %>
        </div>
    </body>
    <script type="text/javascript">
        alert('from template');
</script>
</html>

person TheVillageIdiot    schedule 02.01.2013    source источник
comment
Вы должны опубликовать образец вашего index.html и layout.html. Обработка макетов значительно изменилась по сравнению с Express 2.x до 3.x. Теперь механизм просмотра должен поддерживать его, а не запекать в Express.js.   -  person Hector Correa    schedule 02.01.2013
comment
@HectorCorrea Я добавил код из макета и индексных страниц.   -  person TheVillageIdiot    schedule 03.01.2013
comment
Я подозреваю, что вы используете Express 3.x, верно? Если это так, проблема в том, что поддержка макетов сильно изменилась. Я писал об этой проблеме здесь hectorcorrea.com/blog/ использование-макетов-с-ejs-in-express-3-x   -  person Hector Correa    schedule 03.01.2013
comment
Да, я использую экспресс 3.x, обязательно посмотрю статью.   -  person TheVillageIdiot    schedule 04.01.2013


Ответы (1)


Запустите двоичный файл экспресса, чтобы сгенерировать голый экспресс-проект (он делает это!),

./node_modules/express/bin/express

и для части, которая говорит

app.set('view_engine', 'jade');

Измените это на ejs. Теперь он будет читать все файлы с .ejs как шаблоны ejs.

person Community    schedule 02.01.2013
comment
Хорошо, я запущу двоичный файл. Но если вы видите пример Стива на github, он также работает с файлом шаблона layout.html. Он использует пакет ejs-middleware. - person TheVillageIdiot; 02.01.2013