Как сделать переменные .js доступными для файлов .ejs - PullRequest
0 голосов
/ 06 июня 2018

У меня есть файл index.js и файл list.ejs, который я сказал, чтобы файл экспресса включал:

index.js :

const express = require("express");
const app = express();

app.set("view engine", "ejs"); //Express Template Engine = embedded js
app.set("views", __dirname + "\\views");

let varToUseInEJS = 5;

app.get("/", (req, res) => {
    console.log("Path of Request: " + req.path);
    res.render("list");
});

app.listen(8080, "localhost", 1, () => {
    console.log("Example app listening on: 127.0.0.1:8080");
})

list.ejs:

<!DOCTYPE html>
<html>

<body>
    <table>
        <tr>
            <th>Number</th>
        </tr>
        <% for(let i = 1; i < varToUseInEJS; i++) { %>
            <tr>
                <td>
                    <%= i %>
                </td>
            </tr>
            <% } %>
    </table>
</body>

</html>

, когда я изменяю "varToUseInEJS", например, на 5, он работает и показывает таблицу с заголовком от 1 до 5 +, но в этом случае отладчик node.js дает мнеследующая ошибка:

>> 9|         <% for(let i = 1; i < varToUseInEJS; i++) { %>
10|             <tr>
11|                 <td>
12|                     <%= i %>
varToUseInEJS is not defined

есть ли способ сделать все переменные файлов .js автоматически видимыми для файлов ejs?

Заранее благодарим за любую помощь.

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Чтобы обобщить @Francisco, вы также можете передать varToUseInEJS в качестве переменной.Просто убедитесь, что имя переменной, которую вы передаете в res.render(), совпадает с именами в ваших выражениях EJS.

`app.get('/', (req, res) => {
    res.render('list', {'varToUseInEJS': varToUseInEJS});
}`
0 голосов
/ 06 июня 2018

Это перейдет в varToUse на лист.Обратите внимание, что второй параметр - это просто объект JS.

app.get('/', (req, res) => {
    res.render('list', {'varToUse': 5});
}
...