Jade template with variables (nodejs server side)

Alex B picture Alex B · Mar 29, 2012 · Viewed 61.1k times · Source

So i want to show a contacts list and for that I have transformed each contact div into jade code, but I still have to populate the relevant fields. Can I do that on the server side? I'm using nodejs for server code. The jade template of a contact is:

//  
    img-cont
    .img-cont
      //
        img-cont
      .left-img
        //
          left-img
        .img-box
          img(src='assets/img/img.jpg', alt='')
        .name
          h6
            span John Doe
            img(src='assets/img/star-b.png', alt='')
          p
            strong Phone number:
            | +1 234 567890
          p
            strong Email address:
            a(href='mailto:[email protected]') [email protected]
      //
        left-img
      ul.share-ul
        li
              a.edit(href='#') Edit
        li
          a.share(href='#') Share
        li
          a.delete(href='#') Delete
    //
      img-cont

So instead of having John Doe and the random phone number if there was a way to signify that i'd like variables over there, and then the nodeJS code would stick in the right values in there and add the contact jade to the main jade page, and then go to the next contact and so on. So something similar to this: http://embeddedjs.com/

I'm using express as a framework for Nodejs.

Answer

Dmytro Yashkir picture Dmytro Yashkir · Mar 29, 2012

Yes you can do that when you call render pass the object with data

res.render('your page', {pageData: {name : ['name 1', 'name 2']}});

Then inside jade you can do

span #{pageData.name[0]}

or if you want a loop

each item in pageData.name
  span #{item}

You can find more on the github page https://github.com/visionmedia/jade