Node.js - где найти входящий параметр в HTML/ документе

В моем коде Node.js есть следующая функция, которая отображает HTML-страницу и передает ей объект javascript с именем htmlParamObj

exports.getPage = function (req, res, next) {

    var htmlParamObj= {
        propertyOne: 'yada',
        propertyTwo: 'yada yada'
       };
    res.render('myPage.html',htmlParamObj);

};

Я могу получить доступ к входящему параметру (htmlParamObj) с EJS вроде так: <% propertyOne %>, но я не знаю, как получить доступ htmlParamObj через сам документ. Я верю, что htmlParamOb 'будет прикреплен к документу html - но в каком поле документа я могу его найти? Это в голове, теле, дочерних узлах? Куда?

2 ответа

Переданный объект используется только при рендеринге HTML и не будет передан в браузер.

Если вам нужны эти данные внутри страницы, вы должны поместить их туда.

Решение, которое я использовал, когда мне нужно передать сложные данные в сценарий на стороне клиента, состоит в том, чтобы поместить тег сценария в верхнюю часть моего HTML-файла EJS и заполнить его своими данными. Например, я мог бы добавить следующее в мой шаблон:

<script>
    window.MY_DATA = <%= JSON.stringify(myData) %>
</script>

Обратите внимание, что, поскольку JSON является подмножеством JavaScript, я могу использовать JSON.stringify сериализовать мои данные в форму, подходящую для размещения внутри тега скрипта, и назначить их любой переменной, которую я хочу.

Ограничением здесь является то, что вы не можете отправлять данные, которые не могут быть сериализованы с JSON.stringify, Не тяжелое бремя, но может сбить вас с толку, если вы хотите отправить функцию или другой объект.

Решение, которое я нашел, состоит в том, чтобы определить глобальный атрибут в моем HTML следующим образом:

<a name="team" value="<%=team._id%>"></a>

тогда я могу получить к нему доступ любым скриптом, например:

<script>
var team = document.getElementsByName('team');
</script>

Это вернет правильный объект. Однако я не думаю, что это лучший ответ, особенно учитывая, что любая глобально определяемая переменная обычно является плохой идеей. Я надеюсь, что другой ответ дается на этот вопрос.

Другие вопросы по тегам