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 相关文章推荐
开发跨浏览器javascript常见注意事项
Jan 01 Javascript
JS替换文本域内的回车示例
Feb 18 Javascript
Javascript 高阶函数使用介绍
Jun 15 Javascript
JavaScript实现文字跟随鼠标特效
Aug 06 Javascript
jquery转盘抽奖功能实现
Nov 13 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
Dec 10 Javascript
javascript自执行函数
Feb 10 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
Dec 25 Javascript
JavaScript中变量、指针和引用功能与操作示例
Aug 04 Javascript
详解vue-cli3开发Chrome插件实践
May 29 Javascript
js实现无缝轮播图特效
May 09 Javascript
JS实现前端路由功能示例【原生路由】
May 29 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
最贵的咖啡是怎么产生的,它的风味怎么样?
2021/03/04 新手入门
我的论坛源代码(一)
2006/10/09 PHP
PHP生成HTML静态页面实例代码
2008/08/31 PHP
php数据访问之增删改查操作
2016/05/09 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
layui监听工具栏的实例(操作列表按钮)
2019/09/10 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
python之yield表达式学习
2014/09/02 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
python实现的Iou与Giou代码
2020/01/18 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
拾金不昧的表扬信
2014/01/16 职场文书
农民工创业典型事迹
2014/01/25 职场文书
委托书范文
2014/04/02 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
大专生找工作自荐书
2014/06/10 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
聘任合同书
2015/09/21 职场文书
优质护理心得体会
2016/01/22 职场文书