31 lines
713 B
JavaScript
31 lines
713 B
JavaScript
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
function createTemplateRenderer({
|
|
baseDir = path.resolve("templates"),
|
|
useCache = true,
|
|
} = {}) {
|
|
const cache = {};
|
|
|
|
return function render(fileName, vars = {}) {
|
|
const filePath = path.join(baseDir, fileName);
|
|
let template;
|
|
|
|
if (useCache && cache[filePath]) {
|
|
template = cache[filePath];
|
|
} else {
|
|
template = fs.readFileSync(filePath, "utf8");
|
|
if (useCache) cache[filePath] = template;
|
|
}
|
|
|
|
let html = template;
|
|
for (const [key, value] of Object.entries(vars)) {
|
|
html = html.replace(new RegExp(`{{${key}}}`, "g"), value);
|
|
}
|
|
|
|
return html;
|
|
};
|
|
}
|
|
|
|
module.exports = { createTemplateRenderer };
|