前言
最近在学习vue,发现了一个问题网上相关的信息很少,所以想着总结下,本文主要给大家介绍了关于vue通过url传参来控制全局console.log开关的相关内容,分享出来供大家参考学习,下面话不多说了,来随着小编一起看看详细的介绍吧。
实现方法如下:
如果你的项目中console.log了很多信息,但是发到生产环境上又不想打印这些信息,这时候就需要设置一个全局变量,如:debug,
用正则匹配一下参数:
const getquerystr = (name) => { var reg = new regexp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null;};
当链接中含有这个参数时,将debug的状态置为true,这时console.log是正常可打印状态,否则将debug的状态置为false,这时重写console.log函数:
console.log = function () { return false;}
这时的全局变量就可以用在整个项目中了,用来控制一些调试窗口的显隐。
在vue中可以直写在stores/index.js中,当然,写在其他入口文件里也可以:
const getquerystr = (name) => { var reg = new regexp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null;};/* 若链接后面带上参数 envflag=monitor * 则将 debug 置为true,否则置为false*/const monitor = 'monitor';const envflag = getquerystr('envflag');let debug = monitor ? true : false;if (envflag === 'monitor') { console.log("%cnow you can console log...", "color:red;font-size:18px;font-style:oblique;"); debug = monitor;} else { debug = ''; console.log = function () { return false; }}const state = {debug: debug};export const store = new vuex.store({state, mutations});
这时候如果你想控制一个组件的显示或隐藏,只需要在vuex的getters中声明一下就可以使用变量debug了:
<monitor v-show="debug"></monitor>vuex: { getters: { debug: state => state.debug }}
做完以上的工作后,在url后面带上参数 envflag=monitor 就可以看到组件 monitor 被显示出来,同时打开控制台的话,就可以看到项目所有的 console.log 信息。
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
在微信小程中如何使用swiper组件实现图片切换显示
在vue2.0中有哪些常用的 ui 库?
在c#中如何实现将一个字符转换为整数
如何把vue2.0 和 animate.css合并在一起使用(详细教程)
以上就是在vue中如何控制全局console.log开关的详细内容。