Console.* 是开发中常见的调试方式, 我一直认为 React native 生产环境(release版),会自动关闭调试语句。
之前有个APP使用了Redux框架,并添加了redux-logger 日志中间层,项目中也大量使用console.log语句,在生产环境下app界面渲染速度极慢、卡顿,通过 Android Studio 内存分析工具Memory。发现js线程(mqt_js)占了50% - 100%的cup。 查阅了资料才发现原来是 console.* 极大的拖累的js线程。
1.可以在发布时屏蔽掉所有的 console.*调用。React Native中有一个全局变量__DEV__用于指示当前运行环境是否是开发环境。我们可以据此在正式环境中替换掉系统原先的console实现。
if (!__DEV__) {
global.console = {
info: () => {},
log: () => {},
warn: () => {},
debug: () => {},
error: () => {},
};
}
2.babel插件可以帮你移除所有的console.*调用。首先需要使用yarn add --dev babel-plugin-transform-remove-console来安装,然后在项目根目录下编辑(或者是新建)一个名为·.babelrc`的文件,在其中加入:
{
"env": {
"production": {
"plugins": ["transform-remove-console"]
}
}
}