Я пытаюсь использовать Embedded Javascript renderer для node: https://github.com/visionmedia/ejs
Я хотел бы знать, как включить другой файл вида (частичный) в файл вида .ejs.
Я пытаюсь использовать Embedded Javascript renderer для node: https://github.com/visionmedia/ejs
Я хотел бы знать, как включить другой файл вида (частичный) в файл вида .ejs.
С Express 3.0:
<%- include myview.ejs %>
путь относительный от вызывающего, который включает этот файл, а не из каталога представлений с app.set("views", "path/to/views")
.
В 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
.
Начиная с 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 %>
Express 3.x больше не поддерживает частичный. Согласно сообщению частичный элемент ejs не определен ", вы можете использовать ключевое слово" include" в EJS, чтобы заменить удаленные частичные функции.
EJS сам по себе в настоящее время не позволяет просматривать частичные. Экспресс.