如何为你的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 相关文章推荐
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
Nov 27 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
Nov 18 Javascript
获取中文字符串的实际长度代码
Jun 05 Javascript
Jquery轮播效果实现过程解析
Mar 30 Javascript
Bootstrap table表格简单操作
Feb 07 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
Jun 28 Javascript
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
Mar 02 Javascript
json对象及数组键值的深度大小写转换问题详解
Mar 30 Javascript
15分钟深入了解JS继承分类、原理与用法
Jan 19 Javascript
elementUI 动态生成几行几列的方法示例
Jul 11 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
Sep 29 Javascript
Node.js创建一个Express服务的方法详解
Jan 06 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
动态生成gif格式的图像要注意?
2006/10/09 PHP
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
php数组函数array_key_exists()小结
2015/12/10 PHP
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
2016/02/17 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
使用Python的PIL模块来进行图片对比
2016/02/18 Python
用Python读取几十万行文本数据
2018/12/24 Python
印度尼西亚最好的小工具在线商店:Erafone.com
2019/03/26 全球购物
婚礼证婚人证婚词
2014/01/13 职场文书
写给老师的表扬信
2014/01/21 职场文书
股权转让意向书
2014/04/01 职场文书
产品质量保证书
2014/04/29 职场文书
警察群众路线整改措施
2014/09/26 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
三潭印月的导游词
2015/02/12 职场文书
工程资料员岗位职责
2015/04/13 职场文书
导游词幽默开场白
2019/06/26 职场文书
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python