Vue通过URL传参如何控制全局console.log的开关详解


Posted in Javascript onDecember 07, 2017

前言

最近在学习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 信息。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
jquery 学习之二 属性 文本与值(text,val)
Nov 25 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
Nov 15 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
Aug 14 Javascript
JavaScript将字符串转换成字符编码列表的方法
Mar 19 Javascript
jQuery实现的多屏图像图层切换效果实例
May 07 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
Mar 02 Javascript
jquery自定义插件——window的实现【示例代码】
May 06 Javascript
Ajax验证用户名或昵称是否已被注册
Apr 05 Javascript
详细介绍RxJS在Angular中的应用
Sep 23 Javascript
Vue-Router实现组件间跳转的三种方法
Nov 07 Javascript
vue实现绑定事件的方法实例代码详解
Jun 20 Javascript
js实现AI五子棋人机大战
May 28 Javascript
Vue中添加手机验证码组件功能操作方法
Dec 07 #Javascript
react学习笔记之state以及setState的使用
Dec 07 #Javascript
React Native 截屏组件的示例代码
Dec 06 #Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
Dec 06 #jQuery
mui back 返回刷新页面的实例
Dec 06 #Javascript
javascript实现Emrips反质数枚举的示例代码
Dec 06 #Javascript
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 #jQuery
You might like
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
浅析php与数据库代码开发规范
2013/08/08 PHP
PHP中SimpleXML函数用法分析
2014/11/26 PHP
php实现的xml操作类
2016/01/15 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
2017/04/05 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
requireJS使用指南
2016/04/27 Javascript
Javascript循环删除数组中元素的几种方法示例
2017/05/18 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
jQuery中$原理实例分析
2018/08/13 jQuery
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
用实例分析Python中method的参数传递过程
2015/04/02 Python
python flask实现分页的示例代码
2018/08/02 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
Python如何实现线程间通信
2020/07/30 Python
Nip + Fab官网:英国美容品牌
2019/08/26 全球购物
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
总经理司机岗位职责
2014/02/06 职场文书
大学生职业生涯规划书参考模板
2014/03/05 职场文书
2014年图书室工作总结
2014/12/09 职场文书
机器人瓦力观后感
2015/06/12 职场文书
7个关于Python的经典基础案例
2021/11/07 Python