web-dev-qa-db-fra.com

Node JS passe une variable à Jade / Pug

Pour une raison quelconque, je ne peux pas passer une variable au modèle de pug avec Node JS.

app.get("/", function (req, res) {
    res.render('index', { hello : 'Hey'} )
})

....

extends layout.pug

block content
    h1 #{hello} guy

Cela renvoie simplement "guy" dans le fichier index.html

13
The Hawk

Je pense que vous utilisez le codage JADE (# {hello}) avec le plugin "pug" (jade mis à jour) avec .html statique - complètement faux.

suivez les lignes ci-dessous:

  1. utiliser ce premier

    app.set('views', __dirname + '/public/views');
    app.set('view engine', 'pug');
    
  2. que de passer ceci à la première visite

    app.get('/', function (req, res) {
        res.render('index', { title: 'Hey', message: 'Hello there!'});
    });
    
  3. que l'écho dans le fichier modèle "index.pug" dans "/ public/views"

    html
       head
       title= title
    body
       h1= message
    
13
Seetpal singh

Essayez ceci .. fonctionne pour moi.

partie nodejs/index.js

const router = require('express').Router();
router.get('/', (req, res, next) => {
    const testObj = {hello: 'Hey'};
    res.render('index', { testObj: JSON.stringify(testObj) });
});

partie carlin/jade/(index.pug)

script.
    var testObj = !{testObj};

j'utilise pug version: 2.0.3

4