Я хочу использовать ejs для частичных и использовать jade для отдельных страниц, как использовать оба в одном проекте nodejs и экспресс?
как использовать как ejs, так и jade в одном проекте nodejs и express?
Ответы (2)
Способ легко найти в документах API ExpressJS и consolidate.js на github
Ссылайтесь на фрагмент документа express.js ниже, пожалуйста
app.engine(ext, callback)
Зарегистрируйте обратный вызов данного механизма шаблонов как ext. По умолчанию будет требовать() механизм, основанный на расширении файла. Например, если вы попытаетесь отобразить файл «foo.jade», Express вызовет следующее внутри себя и кэширует require() при последующих вызовах для повышения производительности.
app.engine('jade', require('jade').__express);
Для движков, которые не предоставляют .__express из коробки, или если вы хотите «сопоставить» другое расширение с движком шаблонов, вы можете использовать этот метод. Например, сопоставление механизма шаблонов EJS с файлами «.html»:
app.engine('html', require('ejs').renderFile);
В этом случае EJS предоставляет метод .renderFile() с той же сигнатурой, которую ожидает Express: (путь, параметры, обратный вызов), хотя обратите внимание, что внутри он использует псевдоним этого метода как ejs.__express, поэтому, если вы используете расширения «.ejs». вам не нужно ничего делать.
Некоторые механизмы шаблонов не следуют этому соглашению, библиотека консолидации.js была создана для сопоставления всех популярных механизмов шаблонов узла с соблюдением этого соглашения, что позволяет им без проблем работать в Express.
var engines = require('consolidate');
app.engine('haml', engines.haml);
app.engine('html', engines.hogan);
express.set('view engine', 'ext');
?
- person theonlygusti; 03.09.2016
view engine
по умолчанию, когда используется consolidate
? Я в документах, поэтому указатель на ссылку будет оценен, если он у вас есть. Спасибо.
- person tim.rohrer; 25.02.2018
Это работает для моего:
- добавить pug и ejs в качестве рендеринга
index.js
const express = require('express');
const path = require('path');
const app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.set('view engine', 'ejs');
- вызовите рендер с именем файла.fileext.
маршруты/пользователи
const express = require('express');
const router = express.Router();
router.get('/', function (req, res, next) {
res.render('users.ejs');
});
module.exports = router;
маршруты/о
const express = require('express');
const router = express.Router();
router.get('/', function (req, res, next) {
res.render('about.pug');
});
module.exports = router;
pug
. Я новичок в этом деле. Вы проводили тесты с consolidate.js
? Я думаю, что это путь, который мне нужно выбрать, так как я пытаюсь предоставить одну переменную интерфейсу, используя ejs
.
- person tim.rohrer; 25.02.2018
consolidate.js
, но лучше всего могу сказать, что он не позволяет мне смешивать подходы к рендерингу на одной странице. Поскольку я уже использовал PUG
, я пошел по пути AJAX, чтобы получить свои данные. Излишество....
- person tim.rohrer; 27.02.2018