Подтвердить что ты не робот

Доступ к переменной 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 правильное отображение доски, и для этого мне нужно будет сделать что-то вроде доступа к позициям фигур и затем правильно отобразить их на экране.

Спасибо!

4b9b3361

Ответ 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%>">