Я пытаюсь использовать встроенный модуль визуализации Javascript для узла: https://github.com/visionmedia/ejs
Я хотел бы знать, как я могу включить другой файл представления (частичный) в файл представления .ejs.
Я пытаюсь использовать встроенный модуль визуализации Javascript для узла: https://github.com/visionmedia/ejs
Я хотел бы знать, как я могу включить другой файл представления (частичный) в файл представления .ejs.
С Экспресс 3.0:
<%- include myview.ejs %>
путь является относительным от вызывающей стороны, которая включает файл, а не от каталога представлений, установленного с помощью app.set("views", "path/to/views")
.
EJS v1 включает
EJS v2 включает
(Обновление: новейший синтаксис для ejs v3.0.1 — <%- include('myview.ejs') %>
)
<%- include('partials/footer') %>
тоже работает
- person Hossam Maher; 26.12.2020
В 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
в качестве макета.
Работает с Express 4.x:
Правильный способ включения частичных фрагментов в шаблон в соответствии с этим следует использовать:
<%- include('partials/youFileName.ejs') %>
.
Ты используешь:
<% include partials/yourFileName.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');
ошибка.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 'partial не определен', вы можете использовать "include" ключевое слово в EJS для замены удаленной частичной функциональности.
В официальной документации https://github.com/mde/ejs#includes показано, что включает работы как это:
<%- include('../partials/head') %>
app.js добавить
app.set('view engine','ejs')
добавьте свой частичный файл (ejs) в представления / частичные
в index.ejs
<%- include('partials/header.ejs') %>
Также ‹%- include('partials/header.ejs',{paramName: paramValue}) %›
Для включения файла ejs необходимо использовать:
<%- include("relative path of ejs ") -%>
EJS сам по себе в настоящее время не поддерживает частичные представления. Экспресс делает.