如何为你的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实现的所谓的滑动门
May 23 Javascript
javascript中的一些注意事项 更新中
Dec 06 Javascript
js调用activeX获取u盘序列号的代码
Nov 21 Javascript
关于JS管理作用域的问题
Apr 10 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
May 17 Javascript
JS实现的另类手风琴效果网页内容切换代码
Sep 08 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
Feb 26 Javascript
angularjs 源码解析之injector
Aug 22 Javascript
JSON 数据详解及实例代码分析
Jan 20 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
Aug 16 Javascript
解决vue的过渡动画无法正常实现问题
Oct 31 Javascript
JavaScript Array.flat()函数用法解析
Sep 02 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 错误之引号中使用变量
2009/05/04 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
8个PHP数组面试题
2015/06/23 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
js通过地址栏给action传值(中文乱码全是问号)
2013/05/02 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
Python实现的简单算术游戏实例
2015/05/26 Python
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
python格式化输出保留2位小数的实现方法
2019/07/02 Python
Django在pycharm下修改默认启动端口的方法
2019/07/26 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
python中xlutils库用法浅析
2020/12/29 Python
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
2013/01/30 HTML / CSS
使用phonegap播放音频的实现方法
2017/03/31 HTML / CSS
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
Perfume’s Club美国官网:西班牙第一家在线美容店
2020/06/10 全球购物
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python