tutorial jade español javascript node.js express ejs

jade - Accediendo a la variable EJS en la lógica de Javascript



ejs variables (2)

Podrías inyectar directamente la variable gameState en javascript en la página.

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

Otra opción podría ser hacer una llamada de AJAX al servidor una vez que la página ya se haya cargado, devolver el JSON de gameState y establecer clientGameState en la respuesta de JSON.

También te puede interesar esto: ¿Cómo puedo compartir código entre Node.js y el navegador?

Estoy trabajando en una aplicación NodeJS (es un juego). En este caso, tengo un código configurado de tal manera que cuando una persona visita el índice y elige una habitación, se le redirige a la habitación adecuada.

Ahora mismo se está haciendo así, con Express v2.5.8:

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

A través de board.ejs puedo acceder a la manera de gameState con un código como este:

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

¿Hay alguna forma de importar esto en mi lógica de JavaScript? Quiero poder hacer algo como var gs = ~ import ejs gameState ~

y luego ser capaz de hacer lo que quiera con él: acceder a sus variables, imprimirlo en la consola para su verificación. Eventualmente, lo que quiero hacer con este estado del juego es mostrar el tablero correctamente, y para eso tendré que hacer cosas como acceder a las posiciones de las piezas y luego mostrarlas correctamente en la pantalla.

¡Gracias!


Siento que la lógica de abajo es mejor y funcionó para mí.

Supongamos que la variable pasada a la página de ejs es uid , puede tener el contenido de la etiqueta div o una etiqueta h con la variable pasada. Puede acceder al contenido de la etiqueta div o h en el script y asignarlo a una variable.

Ejemplo de código a continuación: (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>