refactor: 完成Handlebars模板组件化
This commit is contained in:
64
src/helpers/index.js
Normal file
64
src/helpers/index.js
Normal file
@@ -0,0 +1,64 @@
|
||||
/**
|
||||
* Handlebars助手函数中心
|
||||
*
|
||||
* 导入并重导出所有助手函数,方便在generator中统一注册
|
||||
*/
|
||||
|
||||
const formatters = require('./formatters');
|
||||
const conditions = require('./conditions');
|
||||
const utils = require('./utils');
|
||||
|
||||
/**
|
||||
* 注册所有助手函数到Handlebars实例
|
||||
* @param {Handlebars} handlebars Handlebars实例
|
||||
*/
|
||||
function registerAllHelpers(handlebars) {
|
||||
// 注册格式化助手函数
|
||||
Object.entries(formatters).forEach(([name, helper]) => {
|
||||
handlebars.registerHelper(name, helper);
|
||||
console.log(`Registered formatter helper: ${name}`);
|
||||
});
|
||||
|
||||
// 注册条件判断助手函数
|
||||
Object.entries(conditions).forEach(([name, helper]) => {
|
||||
handlebars.registerHelper(name, helper);
|
||||
console.log(`Registered condition helper: ${name}`);
|
||||
});
|
||||
|
||||
// 注册工具类助手函数
|
||||
Object.entries(utils).forEach(([name, helper]) => {
|
||||
handlebars.registerHelper(name, helper);
|
||||
console.log(`Registered utility helper: ${name}`);
|
||||
});
|
||||
|
||||
// 注册HTML转义函数(作为助手函数,方便在模板中调用)
|
||||
handlebars.registerHelper('escapeHtml', function(text) {
|
||||
if (text === undefined || text === null) {
|
||||
return '';
|
||||
}
|
||||
return String(text)
|
||||
.replace(/&/g, "&")
|
||||
.replace(/</g, "<")
|
||||
.replace(/>/g, ">")
|
||||
.replace(/"/g, """)
|
||||
.replace(/'/g, "'");
|
||||
});
|
||||
|
||||
// 注册非转义助手函数(安全输出HTML)
|
||||
handlebars.registerHelper('safeHtml', function(text) {
|
||||
if (text === undefined || text === null) {
|
||||
return '';
|
||||
}
|
||||
return new handlebars.SafeString(text);
|
||||
});
|
||||
|
||||
console.log('All Handlebars helpers registered successfully.');
|
||||
}
|
||||
|
||||
// 导出所有助手函数和注册函数
|
||||
module.exports = {
|
||||
formatters,
|
||||
conditions,
|
||||
utils,
|
||||
registerAllHelpers
|
||||
};
|
||||
Reference in New Issue
Block a user