如何为你的JavaScript代码日志着色详解


Posted in Javascript onApril 08, 2019

前言

在使用 JavaScript 开发项目,可借助 console.log 来打印日志,以便捷分析问题;但,当接触相对比较项目,纯黑色的日志输出,就会使得其作用大大削弱;虽然 info, wran、error 等方法会区别颜色输出,但各自皆有其职责,不便挪来加以滥用;此时,就需求扩展些方法,来为你的 JavaScript 代码日志着色,使得日志可以发挥更大的价值。

要实现这个功能,其实很简单;利用 console.log 字符串替代和格式设置功能即可;下面为其格式说明符的完整列表:

说明符 输出
%s 将值格式化为字符串
%i 或 %d 将值格式化为整型
%f 将值格式化为浮点值
%o 将值格式化为可扩展 DOM 元素。如同在 Elements 面板中显示的一样
%O 将值格式化为可扩展 JavaScript 对象
%c 将 CSS 样式规则应用到第二个参数指定的输出字符串

传递到任何记录方法的第一个参数可能包含一个或多个格式说明符。格式说明符由一个 % 符号与后面紧跟的一个字母组成,字母指示应用到值的格式。字符串后面的参数会按顺序应用到占位符。

关于 console 更多功能和用法,可参见 使用控制台 | Google Developers;下面是对彩色输出 log 的一个简单示例:

console.log(`%c 倾城之链: %s`, 'color: #65c294', ': 一个蛮有用的网站')
console.log(`%c 倾城之链: %c%s`, 'color: #65c294', 'color: #1a1a1a', ': 一个蛮有用的网站')

前面提及,当涉及到较大型项目,为了能从日志显现代码大致流向,最好可以封装方法,针对不同的模块日志,以不同颜色作下区分显示;这在一定程度上可以将所打出的日志利益更大化;下面是对此的一点实践方案:

const _gLogColorObj = {
 moduleA: '#009ad6', // 青色
 moduleB: '#65c294' // 若竹色
}

const _gConsole = (theme, args) => {
 const regStr = `%c@λ~${theme.toLocaleUpperCase()}: ${_gGetMatchStr(args)}`
 const color = _gLogColorObj[theme]
 console.log(regStr, `color: ${color}`, ...args)
}

const _gRegMatchObj = {
 object: '%o',
 function: '%o',
 number: '%i',
 string: '%s',
 undefined: '%s',
 boolean: '%s'
}

const _gGetMatchStr = args => {
 const cMatchArr = []
 for (let key in args) {
 cMatchArr.push(_gRegMatchObj[typeof args[key]])
 }
 return cMatchArr.join(' ')
}

const $log = {
 moduleA: (...args) => {
 _gConsole('moduleA', args)
 },
 moduleB: (...args) => {
 _gConsole('moduleB', args)
 }
 // 您可以在此定义更多方法,来区分不同模块; 
}

上面代码中,主要基于表驱动法,根据所设计的模块名(Eg: moduleA)以及既定色值,彩色化你的 JS 代码日志输出,并指明日志所在模块;这样一来,即可使得日志输出更加清晰。

总结

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

Javascript 相关文章推荐
JS 实现完美include载入实现代码
Aug 05 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
Dec 31 Javascript
JS获取html对象的几种方式介绍
Dec 05 Javascript
详解JavaScript语法对{}处理的坑爹之处
Jun 05 Javascript
JS获取当前日期时间并定时刷新示例
Mar 04 Javascript
javascript实现base64 md5 sha1 密码加密
Sep 09 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
Aug 29 Javascript
百度多文件异步上传控件webuploader基本用法解析
Nov 07 Javascript
小发现之浅谈location.search与location.hash的问题
Jun 23 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
Sep 05 Javascript
vue.js通过路由实现经典的三栏布局实例代码
Jul 08 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 Javascript
详解element-ui日期时间选择器的日期格式化问题
Apr 08 #Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
Apr 08 #Javascript
服务端预渲染之Nuxt(使用篇)
Apr 08 #Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
Apr 08 #Javascript
面试题:react和vue的区别分析
Apr 08 #Javascript
vue router 组件的高级应用实例代码
Apr 08 #Javascript
JavaScript中的一些实用小技巧总结
Apr 07 #Javascript
You might like
无线电广播的开始
2002/01/30 无线电
ie6 动态缩略图不显示的原因
2009/06/21 PHP
PHP file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
php skymvc 一款轻量、简单的php
2011/06/28 PHP
php中日期加减法运算实现代码
2011/12/08 PHP
php目录操作实例代码
2014/02/21 PHP
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
php 多文件上传的实现实例
2016/10/23 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
2019/07/24 Javascript
layui实现tab的添加拒绝重复的方法
2019/09/04 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
node.js通过Sequelize 连接MySQL的方法
2020/12/28 Javascript
深入理解Python中的元类(metaclass)
2015/02/14 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
使用python画社交网络图实例代码
2019/07/10 Python
elasticsearch python 查询的两种方法
2019/08/04 Python
python 初始化一个定长的数组实例
2019/12/02 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
建筑专业毕业生自荐信
2014/05/25 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
优秀毕业生自荐信
2014/06/10 职场文书
2015年基层党组织公开承诺书
2015/01/21 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
幼儿园小班班务总结
2015/08/03 职场文书