如何为你的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实现UrlEncode和UrlDecode的脚本代码
Jul 23 Javascript
js 获取中文拼音,Select自动匹配字母获取值的代码
Sep 23 Javascript
jquery 动态创建元素的方式介绍及应用
Apr 21 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
Jan 02 Javascript
Javascript冒泡排序算法详解
Dec 03 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
Oct 10 Javascript
JS实现探测网站链接的方法【测试可用】
Nov 08 Javascript
Bootstrap轮播图学习使用
Feb 10 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
Jan 24 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
Nov 23 Javascript
详解VS Code使用之Vue工程配置format代码格式化
Mar 20 Javascript
Vue的编码技巧与规范使用详解
Aug 28 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执行速度全攻略(上)
2006/10/09 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
php文件后缀不强制为.php的实操方法
2019/09/18 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
JavaScript通过元素的ID和name设置样式
2014/07/08 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
2016/11/16 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
如何使用vuex实现兄弟组件通信
2018/11/02 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
适合前端Vue开发童鞋的跨平台Weex的使用详解
2019/10/16 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
Python collections模块实例讲解
2014/04/07 Python
python修改注册表终止360进程实例
2014/10/13 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
澳大利亚的奢侈品牌:Oroton
2016/08/26 全球购物
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
介绍一下Java的事务处理
2012/12/07 面试题
酒店工作职员求职简历的自我评价
2013/10/23 职场文书
英文版销售经理个人求职信
2013/11/20 职场文书
学生励志演讲稿
2014/01/06 职场文书
校庆接待方案
2014/03/18 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
万能检讨书
2015/01/27 职场文书