今天碰到了一个问题,项目中需要使用报表查询后的数据,但是如果在node服务中再书写一遍sql,不仅阅读性差,而且后期维护起来比较困难。
而我们报表中的sql大多使用了Freemarker的占位符,所以就在思考如何能在node服务中使用Freemarker的语法。
所以在查询资料后,发现了freemarker.js这个依赖。是由org组织,免费开源的一个组件,现在整理了一下,它的简单入门。
const Freemarker = require('freemarker.js');
const path = require('path');
exports.sendFreemarker = async (ctx) => {
// 创建 Freemarker 实例,并传入配置参数
const fm = new Freemarker({
// viewRoot: 所代表的是模板文件的根目录,可以是相对路径,也可以是绝对路径,因为我的模板文件在当前目录,所以这里可以不用写绝对路径,
viewRoot: path.join(__dirname),
});
// 定义模板文件和数据对象
// 这个位置是你的模板对象
const tpl = 'template.ftl';
// 这里是你想替换的占位符内容
const dataObject = {
planName: '',
selectMonth: '',
selectWeek: ''
};
// 使用 render 方法渲染模板
fm.render(tpl, dataObject, function(err, html, output) {
if (err) {
console.error('Failed to render template:', err);
return;
}
// 最终输出的sql结果为html
console.log('Rendered HTML:', html);
// 可选:处理渲染结果
});
}