如何为你的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 自动完成 AutoComplete(Ajax 查询)
Jul 07 Javascript
JS解决ie6下png透明的方法实例
Aug 02 Javascript
javascript获取xml节点的最大值(实现代码)
Dec 11 Javascript
使用javascript实现Iframe自适应高度
Dec 24 Javascript
jQuery标签编辑插件Tagit使用指南
Apr 21 Javascript
jQuery通过Ajax返回JSON数据
Apr 28 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
Sep 13 Javascript
ES6通过babel转码使用webpack使用import关键字
Dec 13 Javascript
bootstrap网格系统使用方法解析
Jan 13 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
Mar 04 Javascript
vue设置一开始进入的页面教程
Oct 28 Javascript
vue+elementUI 实现内容区域高度自适应的示例
Sep 26 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下使用SimpleXML 处理XML 文件
2010/02/27 PHP
php下使用strpos需要注意 === 运算符
2010/07/17 PHP
php判断变量类型常用方法
2012/04/24 PHP
页面乱码问题的根源及其分析
2013/08/09 PHP
laravel实现上传图片的两种方式小结
2019/10/12 PHP
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
css配合jquery美化 select
2013/11/29 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
轻松掌握JavaScript状态模式
2016/09/07 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
vue项目添加多页面配置的步骤详解
2019/05/22 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
浅析Python编写函数装饰器
2016/03/18 Python
Python在线运行代码助手
2016/07/15 Python
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
python实现归并排序算法
2018/11/22 Python
python 字典操作提取key,value的方法
2019/06/26 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
机关单位动员会主持词
2014/03/20 职场文书
设计师求职信
2014/07/01 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android
SQL Server中锁的用法
2022/05/20 SQL Server
Python中的socket网络模块介绍
2022/07/23 Python
Python TypeError: ‘float‘ object is not subscriptable错误解决
2022/12/24 Python