Подтвердить что ты не робот

Node.js - EJS - включая частичную

Я пытаюсь использовать Embedded Javascript renderer для node: https://github.com/visionmedia/ejs

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

4b9b3361

Ответ 1

С Express 3.0:

<%- include myview.ejs %>

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

EJS включает

Ответ 2

В 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>

Вы также можете сказать Экспресс использовать 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.

Ответ 3

Начиная с Express 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 %>

Ответ 4

Express 3.x больше не поддерживает частичный. Согласно сообщению частичный элемент ejs не определен ", вы можете использовать ключевое слово" include" в EJS, чтобы заменить удаленные частичные функции.

Ответ 5

EJS сам по себе в настоящее время не позволяет просматривать частичные. Экспресс.