Accès à la variable EJS dans la logique Javascript

je travaille sur une application NodeJS (c'est un jeu). Dans ce cas, j'ai mis en place un code tel que lorsqu'une personne visite l'index et choisit une chambre, elle est redirigée vers la chambre appropriée.

en ce moment, C'est fait comme ça, avec Express v2.5.8:

server.get("/room/:name/:roomId, function (req, res) {
  game = ~databaseLookup~
  res.render("board", { gameState : game.gameState });
}

à bord.ejs je peux accéder à la gameState manière avec ce code:

<% if (gameState) { %>
  <h2>I have a game state!</h2>
<% } %>

est-ce qu'il y a un moyen pour moi d'importer ceci dans Mon JavaScript logique? Je veux être en mesure de faire quelque chose comme var gs = ~importation ejs gameState~

et puis être en mesure de faire ce que je veux avec elle--accéder à ses variables, l'imprimer à la console pour vérification. Finalement, ce que je veux faire avec ce gameState est d'afficher correctement la carte, et pour ce faire, je vais avoir besoin de faire des choses comme accéder aux positions des pièces et ensuite les afficher correctement sur l'écran.

Merci!

27
demandé sur Kevin Hwang 2012-07-02 12:02:36

2 réponses

vous pouvez directement injecter la variable gameState dans javascript sur la page.

<% if (gameState) { %>
     <h2>I have a game state!</h2>
     <script>
        var clientGameState = <%= gameState %>            
     </script>
<% } %>

une autre option pourrait être de faire un appel AJAX au serveur une fois que la page a déjà chargé, retourner le gameState JSON, et définir clientGameState à la réponse JSON.

vous pouvez également être intéressé par ceci: Comment puis-je partager le code entre les noeuds.js et le navigateur?

38
répondu Nick Hagianis 2017-05-23 10:31:02

je pense que la logique ci-dessous est meilleure et cela a fonctionné pour moi.

supposons que la variable passée à la page ejs est uid , vous pouvez avoir le contenu de l'étiquette div ou une étiquette h avec la variable passée. Vous pouvez accéder au contenu de la balise div ou h dans le script et l'assigner à 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>
6
répondu Ramaprasanna Chellamuthu 2012-10-01 11:48:48