console.log 在js、React Native (Rn)中的开关设计

本文分享了一种在不同开发环境中实现日志开关的技术方案,包括Android、ReactNative及React应用中如何通过全局变量控制日志输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为啥会写这个题目呢,也是来自于自己在开发场景转换时遇到一个性能优化点。因为我之前是做Android开发的,当时设计Log开关的时候,是去写一个LogUtils工具类,里面去重写Log类的各个方法,然后里面的关键代码

if (BuildConfig.DEBUG) {
     //todo
}

因为在写Android代码时,用工具类LogUtils很方便,会自动提示 import,所以编码比较便捷。


后面我又加入了React Native的大军的开发,因为在写Rn的时候大多数是用React js的,这个时候如果还用之前Android那套思路来写开关的话,问题是没有的,但是每个页面都去import这就有点受不了。后面了解React Native是有global全局变量的,那么自然想到了下面的代码:

if (!SHOW_LOG) {
        global.console = {
            info: () => {},
            log: () => {},
            warn: () => {},
            debug: () => {},
            error: () => {},
        };
    }

思路就是控制变量SHOW_LOG的 true/false来是否重写系统的console对象。


再后面我又开始负责写前后端分离的React项目了,那么这时候再去看这个问题,我自然想到html中的window对象,全局变量是 window 对象的属性,全局函数是 window 对象的方法。然后就想到了后面的代码:
//控制log开关

const ISDEBU=true
ISDEBU || (()=>{
    window.console={
        info: () => {},
        log: () => {},
        warn: () => {},
        debug: () => {},
        error: () => {},
    };
})()

嗯哼,这个小技术点就分享到这里了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值