Node.js + Express.js trükk segédfüggvények template-ben való használatára

Express.js alatt van lehetőség globálisan elérhető változók hozzáadására. Például a következővel elérhetővé tehetjük a basepath -t.

app.dynamicHelpers({
  basepath: function() {
    return this.set('home');
  }
});

És ezek után használhatjuk is ezt például linkek esetében a template-ben. Hagy mutassam be ezt EJS használatával:

<a href="<%= basepath %>">Home</a>  

Ugyanakkor semmi nem korlátozza meg, hogy az app.dynamicHelpers függvényeket is visszaadjon. Legutóbb szükségem lett volna egy szép kis dátum formázó függvényre, ami hasonlókat tud, mint a PHP-s date. Szerencsére ennek a függvénynek létezik php.js átirata, szintén date néven. Gyorsan csináltam is belőle egy kis Node.js modult. Igazából semmit nem változtattam az eredeti függvényen, csak elérhetővé tettem. Ilyenre írtam át az elejét, és mentettem el lib/date.js néven:

module.exports = function (format, timestamp) {  
// Ide jön az eredeti függvénytörzs.  
};  

Ezek után könnyű lesz majd használni.

var date = require('./lib/date');

app.dynamicHelpers({
  basepath: function() {
    return this.set('home');
  },
  formatDate: function() {
    return date;
  }
});

A template fájlokban ezek után gyerekjáték dátumot formázni:

<time class="published" pubdate="pubdate" datetime="<%= formatDate('c', created) %>">  
  Published at <%= formatDate('F jS, Y g:i a', created) %>  
</time>  

A kimenet pedig valami ilyesmi lesz:

<time class="published" pubdate="pubdate" datetime="2010-12-10T12:44:12+00:00">  
  Published at December 10th, 2010 12:44 am  
</time>  
</code>
comments powered by Disqus