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 相关文章推荐
top.location.href 没有权限 解决方法
Aug 05 Javascript
JavaScript入门之事件、cookie、定时等
Oct 21 Javascript
javascript操纵OGNL标签示例代码
Jun 16 Javascript
jquery插件qrcode在线生成二维码
Apr 26 Javascript
JavaScript语言精粹经典实例(整理篇)
Jun 07 Javascript
JavaScript九九乘法口诀表的简单实现
Oct 04 Javascript
如何提高Dom访问速度
Jan 05 Javascript
JavaScrpt的面向对象全面解析
May 09 Javascript
JS验证码实现代码
Sep 14 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
Jun 10 Javascript
layui--select使用以及下拉框实现键盘选择的例子
Sep 24 Javascript
如何基于viewport vm适配移动端页面
Nov 13 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
桌面中心(一)创建数据库
2006/10/09 PHP
php二分法在IP地址查询中的应用
2008/08/12 PHP
PHP学习之字符串比较和查找
2011/04/17 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
2013/06/21 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
基于jquery的商品展示放大镜
2010/08/07 Javascript
JS对img标签进行优化使用onerror显示默认图像
2014/04/24 Javascript
Jquery实现鼠标移动放大图片功能实例
2015/03/25 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
ES6 迭代器与可迭代对象的实现
2019/02/11 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
vue响应式系统之observe、watcher、dep的源码解析
2019/04/09 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
Vue 简单实现前端权限控制的示例
2020/12/25 Vue.js
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
python实现封装得到virustotal扫描结果
2014/10/05 Python
Python 探针的实现原理
2016/04/23 Python
深入理解Python装饰器
2016/07/27 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
基于django传递数据到后端的例子
2019/08/16 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
原生python实现knn分类算法
2019/10/24 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
python3中sys.argv的实例用法
2020/04/24 Python
Love, Bonito国际官网:新加坡女装品牌
2021/03/13 全球购物
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
使用Redis实现实时排行榜功能
2021/07/02 Redis
JAVA API 实用类 String详解
2021/10/05 Java/Android
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA