Доступ к переменной EJS в логике JavaScript
Я работаю над приложением Node.js (это игра). В этом случае у меня есть некоторый код, настроенный таким образом, что, когда человек посещает указатель и выбирает комнату, он перенаправляется в нужную комнату.
Прямо сейчас это делается с помощью Express v2.5.8:
server.get("/room/:name/:roomId, function (req, res) {
game = ~databaseLookup~
res.render("board", { gameState : game.gameState });
}
В board.ejs я могу получить доступ к gameState с помощью следующего кода:
<% if (gameState) { %>
<h2>I have a game state!</h2>
<% } %>
Есть ли способ импортировать это в мою логику JavaScript? Я хочу иметь возможность делать что-то вроде var gs = ~import ejs gameState~
, а затем иметь возможность делать с ним все, что захочу - получить доступ к его переменным, распечатать его на консоли для проверки. В конце концов, я хочу сделать с этим gameState правильное отображение доски, и для этого мне нужно будет сделать что-то вроде доступа к позициям фигур и затем правильно отобразить их на экране.
Спасибо!
Ответы
Ответ 1
Вы можете непосредственно вставить переменную gameState в javascript на странице.
<% if (gameState) { %>
<h2>I have a game state!</h2>
<script>
var clientGameState = <%= gameState %>
</script>
<% } %>
Другой вариант может заключаться в том, чтобы вернуть AJAX-сервер на сервер после того, как страница уже загружена, вернуть GameState JSON и установить clientGameState в ответ JSON.
Вас также может заинтересовать: Как я могу поделиться кодом между Node.js и браузером?
Ответ 2
Я чувствую, что ниже логика лучше, и это сработало для меня.
Предположим, что переменная, переданная на страницу ejs, uid
, вы можете иметь содержимое тега div
или тега h
с переданной переменной. Вы можете получить доступ к содержимому тега div или h
в script и назначить его переменной.
Пример кода ниже: (в ejs)
<script type="text/javascript">
$(document).ready(function() {
var x = $("#uid").html();
alert(x); // now JS variable 'x' has the uid that passed from the node backend.
});
</script>
<h2 style="display:none;" id="uid"><%=uid %></h2>
Ответ 3
Ну, в этом случае вы можете просто использовать ввод текста для получения данных. Это легко и проверено, когда вы используете его в Firebase.
<input type="text" id="getID" style="display: none" value="<%=id%>">