如何为你的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 相关文章推荐
如何用javascript判断录入的日期是否合法
Jan 08 Javascript
jquery validate使用攻略 第四步
Jul 01 Javascript
javascript检测对象中是否存在某个属性判断方法小结
May 19 Javascript
JavaScript中指定函数名称的相关方法
Jun 04 Javascript
jQuery实现html元素拖拽
Jul 21 Javascript
解决JS请求服务器gbk文件乱码的问题
Oct 16 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
Jun 24 Javascript
jQuery图片切换动画效果
Feb 28 Javascript
使用JavaScript开发跨平台的桌面应用详解
Jul 27 Javascript
vue的滚动条插件实现代码
Sep 07 Javascript
Typescript的三种运行方式(小结)
Sep 18 Javascript
重置Redux的状态数据的方法实现
Nov 18 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
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
js获取对象为null的解决方法
2013/11/21 Javascript
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
vue的keep-alive用法技巧
2019/08/15 Javascript
angularjs模态框的使用代码实例
2019/12/20 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
Django 使用logging打印日志的实例
2018/04/28 Python
Python正则表达式匹配数字和小数的方法
2019/07/03 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
Python Django form 组件动态从数据库取choices数据实例
2020/05/19 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
Python实现Keras搭建神经网络训练分类模型教程
2020/06/12 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
详解python算法常用技巧与内置库
2020/10/17 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
乔迁宴答谢词
2014/01/21 职场文书
教师简历自我评价
2014/02/03 职场文书
报关员个人职业生涯规划书
2014/03/12 职场文书
社区道德讲堂实施方案
2014/03/21 职场文书
现实表现材料范文
2014/12/23 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
贷款收入证明格式
2015/06/24 职场文书
开学第一周值周总结
2015/07/16 职场文书
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python