🐛 Console 调试

ThinkAdmin 当前没有内置 consoleDebug() 开关,也不会在 admin.js 中重写浏览器 console 方法。后台模板会在 admin.js 之后加载 public/static/extra/script.js,该文件是项目级自定义脚本入口,适合按项目需要追加调试控制逻辑。

源码中的 public/static/extra/script.js 默认只包含扩展示例和 showTableImage()showSpec() 两个辅助方法;其中的 console.log 只是注释示例,不会自动生效。

使用位置

后台主布局会在加载 layui.jsrequire.jsadmin.js 后加载 extra/script.js。因此调试脚本可以写在:

public/static/extra/script.js

使用静态插件更新时,该项目级文件不会被 composer require zoujingli/think-plugs-static 覆盖,适合保留本项目自己的 RequireJS 扩展、事件监听或调试逻辑。

可选调试开关

如果项目希望在生产环境静默普通调试日志,可以自行加入一个轻量开关:

$(function () {
    var nativeConsole = {
        log: console.log,
        warn: console.warn,
        info: console.info,
        debug: console.debug,
        error: console.error
    };

    var debugMode = localStorage.getItem('thinkadmin_console_debug') === '1';

    ['log', 'warn', 'info', 'debug'].forEach(function (method) {
        console[method] = function () {
            if (debugMode) {
                nativeConsole[method].apply(console, arguments);
            }
        };
    });

    window.consoleDebug = function (state) {
        debugMode = typeof state === 'boolean' ? state : !debugMode;
        localStorage.setItem('thinkadmin_console_debug', debugMode ? '1' : '0');
        nativeConsole.log('Console debug ' + (debugMode ? 'enabled' : 'disabled'));
        return debugMode;
    };

    window.consoleDebugState = function () {
        return debugMode;
    };
});

开启或关闭:

consoleDebug(true);  // 开启
consoleDebug(false); // 关闭
consoleDebug();      // 切换

上面的示例只拦截 logwarninfodebug,保留 console.error 原样输出,避免隐藏运行时错误。

使用建议

  • 这不是框架内置 API,而是项目级扩展示例;不要在公共插件中默认依赖 consoleDebug()
  • 已上线项目如果重写 console,建议保留 error 输出,并为开关使用项目独立的 localStorage 键名。
  • 如果只是排查异步加载页面,可直接监听 reInit 事件并按需输出调试信息。
$(function () {
    $body.on('reInit', function (event, $dom) {
        console.log('Event.reInit', $dom);
    });
});
最近更新:
Contributors: LiuPengFeiCode, Anyon