изменение типа оболочки кода для express + node.js + ejs - PullRequest
1 голос
/ 05 ноября 2011

В ejs на стороне клиента я использую [% code %] вместо <% code %> для пометки кода ejs, но я хотел бы сделать то же самое на стороне сервера с помощью express.На стороне клиента я бы сделал что-то вроде var template = new EJS({text: template_src, type:'['});

Вот мой код узла:

app.set('view engine', 'ejs');
app.register('.html', require('ejs'));

app.get('/', function(req, res){
    res.render('index.html', { title: 'My Site' });
});

Где вы устанавливаете параметр типа, чтобы я мог изменить эту опцию*

Ответы [ 3 ]

7 голосов
/ 05 ноября 2011

Со страницы EJS Github:

Пользовательские теги также могут применяться глобально:

var ejs = require('ejs'); ejs.open = '{{'; ejs.close = '}}';

Единственное, что вам нужно сделать, это скопировать эти строки в начале вашего приложения Express, и это - изменение применяется глобально (измените тег открытия и закрытия на любое, что вы хотите).

Обновление для последней версии по состоянию на 20 июля 2016 г.

Начиная с самых последних версий EJS, пользовательские теги больше нельзя использовать (см. https://github.com/mde/ejs/issues/55). Все, что вы можете сделать, это изменить разделители со значения по умолчанию % на другие (опция delimiter). Есть разговоры о возобновлении этого. См https://github.com/mde/ejs/issues/88 и https://github.com/mde/ejs/issues/115

4 голосов
/ 20 ноября 2011

Если вы используете экспресс:

app.set('view options', {
    open: '{{',
    close: '}}'
});
1 голос
/ 24 февраля 2016

ejs v2. * используйте другую опцию:

var ejs = require('ejs'),
users = ['geddy', 'neil', 'alex'];

// Just one template
ejs.render('<?= users.join(" | "); ?>', {users: users},
    {delimiter: '?'});
// => 'geddy | neil | alex'

// Or globally
ejs.delimiter = '$';
ejs.render('<$= users.join(" | "); $>', {users: users});
// => 'geddy | neil | alex'

Вы не можете заменить символы < и >.

...