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 相关文章推荐
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
Jan 11 Javascript
jquery 图片轮换效果
Jul 29 Javascript
后台获取ZTREE选中节点的方法
Feb 12 Javascript
js实现交换运动效果的方法
Apr 10 Javascript
jquery实现多屏多图焦点图切换特效的方法
May 04 Javascript
JQuery中attr方法和removeAttr方法用法实例
May 18 Javascript
jQuery代码实现发展历程时间轴特效
Jul 30 Javascript
每日十条JavaScript经验技巧(一)
Jun 23 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
Dec 24 Javascript
整理关于Bootstrap警示框的慕课笔记
Mar 29 Javascript
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
vue-cli3访问public文件夹静态资源报错的解决方式
Sep 02 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
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
PHP代码优化之成员变量获取速度对比
2014/02/28 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
2014/11/01 PHP
php实现事件监听与触发的方法
2014/11/21 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
浅谈javascript的数据类型检测
2010/07/10 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
2015/08/27 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
2019/02/28 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
使用localStorage替代cookie做本地存储
2019/09/25 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
基于Vue CSR的微前端实现方案实践
2020/05/27 Javascript
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
python for和else语句趣谈
2019/07/02 Python
如何通过python实现人脸识别验证
2020/01/17 Python
Python连接Impala实现步骤解析
2020/08/04 Python
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
股份转让协议书范本
2015/01/27 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python