Node.js - EJS - включая частичный - PullRequest
55 голосов
/ 23 марта 2011

Я пытаюсь использовать встроенный рендерер Javascript для узла: https://github.com/visionmedia/ejs

Я хотел бы знать, как я могу включить другой файл представления (частичный) в файл представления .ejs.

Ответы [ 6 ]

109 голосов
/ 07 июля 2011

С Express 3.0:

<%- include myview.ejs %>

путь относительный от вызывающей стороны, которая включает файл, а не от каталога представлений, установленного с app.set("views", "path/to/views").

EJS включает

14 голосов
/ 19 сентября 2015

В Express 4.x Я использовал следующее для загрузки ejs:

  var path = require('path');

  // Set the default templating engine to ejs
  app.set('view engine', 'ejs');
  app.set('views', path.join(__dirname, 'views'));

  // The views/index.ejs exists in the app directory
  app.get('/hello', function (req, res) {
    res.render('index', {title: 'title'});
  });

Тогда вам просто нужно два файла, чтобы это заработало - views/index.ejs:

<%- include partials/navigation.ejs %>

И views/partials/navigation.ejs:

<ul><li class="active">...</li>...</ul>

Вы также можете указать Express использовать ejs для шаблонов HTML:

var path = require('path');
var EJS  = require('ejs');

app.engine('html', EJS.renderFile);

// Set the default templating engine to ejs
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));

// The views/index.html exists in the app directory
app.get('/hello', function (req, res) {
  res.render('index.html', {title: 'title'});
});

Наконец, вы также можете использоватьмодуль макета ejs:

var EJSLayout = require('express-ejs-layouts');
app.use(EJSLayout);

В качестве макета будет использоваться views/layout.ejs.

9 голосов
/ 12 января 2016

По состоянию на Экспресс 4.x

app.js

// above is all your node requires

// view engine setup
app.set('views', path.join(__dirname, 'views')); <-- ./views has all your .ejs files
app.set('view engine', 'ejs');

error.ejs

<!-- because ejs knows your root directory for views, you can navigate to the ./base directory and select the header.ejs file and include it -->

<% include ./base/header %> 
<h1> Other mark up here </h1>
<% include ./base/footer %>
3 голосов
/ 05 декабря 2012

Express 3.x больше не поддерживает частичное. В соответствии с постом ejs «частичное не определено» , вы можете использовать ключевое слово «include» в EJS для замены удаленной частичной функциональности.

0 голосов
/ 20 февраля 2019

Попробуйте использовать весь путь ==>

<% include C: /Users/<em>UserName/Desktop/NodeJS/partials/header.ejs%> ---> payвнимание на '/'

Попробовал это с помощью узла --version v8.11.4 + экспресс-модуль v.4.x

0 голосов
/ 11 мая 2011

EJS сам по себе в настоящее время не допускает частичного просмотра.Экспресс делает.

...