Puede crear un archivo templates.js (ya sea manualmente o en el código) como un módulo vacío. Luego, después de compilar las plantillas, adjuntó la función compilada al módulo vacío.
var ejs = require('ejs');
var fs = require('fs');
fs.writeFileSync('./template.js', 'module.exports = { }', 'utf8');
var compiled = ejs.compile(fs.readFileSync('./example.ejs', 'utf8'));
// Add an example function to the template file that uses the compiled function
require('./template').example = compiled;
// Get the example template again (this could be in another file for example)
var output = require('./template').example;
var html = output({ id: 10, title: 'Output' });
Desde modules are cached por defecto, debe ser capaz de require('./template.js')
siempre que se necesite, y tendrá todas las plantillas precompilados adjuntos.
Esto no está relacionado con la serialización de plantillas, que era la pregunta real. – Avius