原文件写法

路径:\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,"&lt;").replace(/>/g, "&gt;");
      if(/^(true|false)$/.test(value)) {
        value = JSON.parse(value);
      }
      if(/^\d+$/.test(value)) {
        value = Number(value);
      }
      ThemeConfig[field] = value;
    </#if>
  </#list>

结果
QQ图片20220310111450.png
重复代码太多。
将以上代码替换为:

  // 获取主题配置
  var ThemeConfig = {};
  function handleValue(value) {
    value = value.replace(/</g,"&lt;").replace(/>/g, "&gt;");
    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>

有效减少
效果如下:
QQ截图20220310111919.png
对比:
优化前
QQ截图20220310112009.png
优化后
QQ截图20220310112018.png
感谢海弟提供代码支持
海弟:http://blog.huangsir.cc
原文地址:https://blog.shikangsi.cn/archives/halo-theme-joe-js

qinhua 朋友改的,就是把循环放到外面了,不知道有没有问题,起码目前我试了还没发现问题。

    qinhua 还有,评论的表情都在jsd上面,会拖慢速度。有没有解决方案,我现在都给拖回来了,放自己空间,以便提高速度。