strong pretty jade node.js pug express

node.js - pretty - Jade-Motor de plantillas: cómo verificar si existe una variable



pug js strong (6)

¿No debería incluirse ''nombre de usuario'' en el objeto local?

https://github.com/visionmedia/jade/tree/master/examples

Actualmente estoy usando Jade en un nuevo proyecto. Quiero mostrar una página y verificar si hay alguna variable disponible.

app.js :

app.get(''/register'', function(req, res){ res.render(''register'', { locals: { title: ''Register'', text: ''Register as a user.'', } }); });

register.jade :

- if (username) p= username - else p No Username!

Siempre me sale el siguiente error:

username is not defined

¿Alguna idea sobre cómo puedo solucionar esto?


Creé un middleware para tener el método isDefined disponible en todas partes en mis vistas:

module.exports = (req, res, next) => { res.locals.isDefined = (variable) => { return typeof(variable) !== ''undefined'' }; next(); };


Esto debería funcionar:

- if (typeof(username) !== ''undefined''){ //-do something -}


Más simple que el método de @ Chetan si no te importa probar valores falsy en lugar de valores indefinidos:

if locals.username p= username else p No Username!

Esto funciona porque los locals nombres locals son el objeto raíz de la plantilla.


Si sabe de antemano que quiere una variable particular disponible, pero no siempre utilizada, he comenzado a agregar un valor "predeterminado" al objeto auxiliar.

app.helpers({ username: false });

De esta manera, aún puede hacer if (username) { sin una falla catastrófica. :)


if ''username'' in this p=username

Esto funciona porque res.locals es el objeto raíz en la plantilla.