Ваш вопрос о том, как работают шаблоны ejs. Это ответ на этот вопрос. Я думаю, у вас также может быть что-то нехорошее в вашей экспресс-настройке, вызывающее у вас проблемы.
EJS - система рендеринга на стороне сервера. Его работа выполняется до отправки html-кода клиенту, поэтому он не имеет ничего общего с браузером.
Скриплеты внутри <% %>
запускаются на сервере для вставки содержимого в шаблон перед отправкой клиенту.
Если вы хотите напечатать что-то на консоли браузера, не помещайте это в скриптлет, просто поместите это в тег <script>
, например:
<script>
console.log("foo");
</script>
Если вы хотите, чтобы консоль браузера печатала что-то, сгенерированное сервером, вы можете использовать ejs, чтобы поместить значение сообщения в то, что оно генерирует:
<script>
console.log("<%=message%>");
</script>
Сервер поместит значение сообщения в оператор console.log (), который доставляется в браузер.
Этот пример выводит «Wellcomes» на консоль браузера:
Сервер:
const bodyParser = require('body-parser'),
express = require('express'),
path = require('path');
const app = express();
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.static(path.join(__dirname, 'public')));
app.get('/', (req, res) => {
res.render('index', { message: 'Wellcomes' });
});
const port = process.env.PORT || 3000;
const listener = app.listen(port, function() {
console.log('platform listening on', listener.address().port);
});
index.ejs:
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Sign-Up/Login Form</title>
</head>
<body>
<script>
console.log("<%=message %>");
</script>
</body>
</html>
Если вы показываете страницу источника в вашем браузере, вы должны увидеть:
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Sign-Up/Login Form</title>
</head>
<body>
<script>
console.log("Wellcomes");
</script>
</body>
</html>