Je travaille sur une application Node.js (c'est un jeu). Dans ce cas, j'ai un code configuré de telle sorte que lorsqu'une personne visite l'index et choisit une pièce, elle est redirigée vers la pièce appropriée.
En ce moment, cela se fait comme ceci avec Express v2.5.8:
server.get("/room/:name/:roomId, function (req, res) {
game = ~databaseLookup~
res.render("board", { gameState : game.gameState });
}
Dans board.ejs, je peux accéder à la manière gameState avec un code comme celui-ci:
<% if (gameState) { %>
<h2>I have a game state!</h2>
<% } %>
Existe-t-il un moyen pour moi d'importer cela dans ma logique JavaScript? Je veux pouvoir faire quelque chose comme var gs = ~import ejs gameState~
et ensuite pouvoir faire ce que je veux avec lui - accéder à ses variables, l'imprimer sur la console pour vérification. Finalement, ce que je veux faire avec ce gameState est d'afficher correctement le tableau, et pour ce faire, je devrai faire des choses comme accéder aux positions des pièces puis les afficher correctement à l'écran.
Merci!
Vous pouvez directement injecter la variable gameState en javascript sur la page.
<% if (gameState) { %>
<h2>I have a game state!</h2>
<script>
var clientGameState = <%= gameState %>
</script>
<% } %>
Une autre option peut être de faire un AJAX rappel au serveur une fois la page déjà chargée, de retourner le gameState JSON et de définir clientGameState sur la réponse JSON.
Cela peut également vous intéresser: Comment puis-je partager du code entre Node.js et le navigateur?
Je pense que la logique ci-dessous est meilleure et cela a fonctionné pour moi.
Supposons que la variable transmise à la page ejs soit uid
, vous pouvez avoir le contenu de la balise div
ou d'une balise h
avec la variable passée. Vous pouvez accéder au contenu de la balise div ou h
dans le script et l'affecter à une variable.
exemple de code ci-dessous: (en ejs)
<script type="text/javascript">
$(document).ready(function() {
var x = $("#uid").html();
alert(x); // now JS variable 'x' has the uid that's passed from the node backend.
});
</script>
<h2 style="display:none;" id="uid"><%=uid %></h2>
Eh bien, dans ce cas, vous pouvez simplement utiliser du texte d'entrée pour obtenir des données. Il est facile et testé lorsque vous l'utilisez dans Firebase.
<input type="text" id="getID" style="display: none" value="<%=id%>">