2011-03-01 31 views
8

Estoy usando node.js. Quiero leer un archivo con algunas cadenas de marcador de posición y reemplazarlos dinámicamente antes de servir el archivo. Este no es un archivo HTML, por lo que un motor de plantillas no funcionará.Reemplazar cadena en un archivo de texto en node.js

¿Cómo puedo hacer esto?

+0

He intentado cargar el archivo como una cadena y hacer regex replace. Sin embargo, me preguntaba si habría una manera más elegante. –

+1

¿Has probado los bigotes? http://mustache.github.com/ – generalhenry

Respuesta

23

Si el motor de una plantilla es exagerado, simplemente use string.replace().

temp = "Hello %NAME%, would you like some %DRINK%?"; 

temp = temp.replace("%NAME%","Michael Dillon"); 
temp = temp.replace("%DRINK%","tea"); 
console.log(temp); 

Con solo un poco más de trabajo, puede crear una función de plantilla de propósito general basada únicamente en los métodos estándar en el objeto String.

2

Los motores de plantillas no son solo para html. Si está utilizando Express, por ejemplo, puede establecer sus propias cabeceras y especifique un tipo de contenido:

Vista:

var foo = "{{ bar }}"; 

Rendering:

app.get('/file.js', function(req, res, next) { 
    res.render('templateName', { 
    locals: {bar: 'quux'}, 
    headers: {'content-type': 'text/javascript'} 
    }); 
}) 

cederá:

var foo = "quux"; 

Si no está utilizando Express, puede simplemente renderizar la plantilla y enviar la respuesta con cualquier contenido tipo que te gusta

Cuestiones relacionadas