原文件写法
路径:\templates\themes\joe2.0\template\config.ftl
// 获取主题配置
var ThemeConfig = {};
<#list settings?keys as key>
<#assign valueString = settings[key]?string>
<#assign isNeeded = key?index_of('custom_')==-1 && valueString?index_of('<script')==-1 && valueString?index_of('<link')==-1>
<#if isNeeded>
var field = '${key}';
var value = '${valueString?js_string}';
value = value.replace(/</g,"<").replace(/>/g, ">");
if(/^(true|false)$/.test(value)) {
value = JSON.parse(value);
}
if(/^\d+$/.test(value)) {
value = Number(value);
}
ThemeConfig[field] = value;
</#if>
</#list>
结果
重复代码太多。
将以上代码替换为:
// 获取主题配置
var ThemeConfig = {};
function handleValue(value) {
value = value.replace(/</g,"<").replace(/>/g, ">");
if(/^(true|false)$/.test(value)) {
value = JSON.parse(value);
}
if(/^\d+$/.test(value)) {
value = Number(value);
}
return value;
}
<#list settings?keys as key>
<#assign valueString = settings[key]?string>
<#assign isNeeded = key?index_of('custom_')==-1 && valueString?index_of('<script')==-1 && valueString?index_of('<link')==-1>
<#if isNeeded>
ThemeConfig['${key}'] = handleValue('${valueString?js_string}');
</#if>
</#list>
有效减少
效果如下:
对比:
优化前
优化后
感谢海弟提供代码支持
海弟:http://blog.huangsir.cc
原文地址:https://blog.shikangsi.cn/archives/halo-theme-joe-js