Vue通过URL传参如何控制全局console.log的开关详解
前言
最近在学习vue,发现了一个问题网上相关的信息很少,所以想着总结下,本文主要给大家介绍了关于Vue通过URL传参来控制全局console.log开关的相关内容,分享出来供大家参考学习,下面话不多说了,来随着小编一起看看详细的介绍吧。
实现方法如下:
如果你的项目中console.log了很多信息,但是发到生产环境上又不想打印这些信息,这时候就需要设置一个全局变量,如:debug,
用正则匹配一下参数:
constgetQueryStr=(name)=>{ varreg=newRegExp("(^|&)"+name+"=([^&]*)(&|$)","i"); varr=window.location.search.substr(1).match(reg); if(r!=null)returnunescape(r[2]); returnnull; };
当链接中含有这个参数时,将debug的状态置为true,这时console.log是正常可打印状态,否则将debug的状态置为false,这时重写console.log函数:
console.log=function(){ returnfalse; }
这时的全局变量就可以用在整个项目中了,用来控制一些调试窗口的显隐。
在Vue中可以直写在stores/index.js中,当然,写在其他入口文件里也可以:
constgetQueryStr=(name)=>{ varreg=newRegExp("(^|&)"+name+"=([^&]*)(&|$)","i"); varr=window.location.search.substr(1).match(reg); if(r!=null)returnunescape(r[2]); returnnull; }; /*若链接后面带上参数envFlag=monitor *则将debug置为true,否则置为false */ constmonitor='monitor'; constenvFlag=getQueryStr('envFlag'); letdebug=monitor?true:false; if(envFlag==='monitor'){ console.log("%cNowYouCanConsoleLog...","color:red;font-size:18px;font-style:oblique;"); debug=monitor; }else{ debug=''; console.log=function(){ returnfalse; } } conststate={debug:debug}; exportconststore=newvuex.Store({state,mutations});
这时候如果你想控制一个组件的显示或隐藏,只需要在vuex的getters中声明一下就可以使用变量debug了:
vuex:{ getters:{ debug:state=>state.debug } }
做完以上的工作后,在URL后面带上参数envFlag=monitor就可以看到组件monitor被显示出来,同时打开控制台的话,就可以看到项目所有的console.log信息。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。