如何为你的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的对话框详解与参数
Mar 08 Javascript
js加强的经典分页实例
Mar 15 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
Apr 10 Javascript
Javascript节点关系实例分析
May 15 Javascript
初识Javascript小结
Jul 16 Javascript
jquery自定义表格样式
Nov 23 Javascript
jQuery通过写入cookie实现更换网页背景的方法
Apr 15 Javascript
jquery mobile界面数据刷新的实现方法
May 28 Javascript
JavaScript中localStorage对象存储方式实例分析
Jan 12 Javascript
js eval函数使用,js对象和字符串互转实例
Mar 06 Javascript
Vue 使用typescript如何优雅的调用swagger API
Sep 01 Javascript
js实现特别简单的钟表效果
Sep 14 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 如何设置一个严格控制过期时间的session
2017/05/05 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
javascript之AJAX框架使用说明
2010/04/24 Javascript
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
使用js实现关闭js弹出层的窗口
2014/02/10 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
2015/08/26 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
2016/02/25 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
深入浅析JavaScript中数据共享和数据传递
2016/04/25 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
Vue.js学习教程之列表渲染详解
2017/05/17 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
Python正则简单实例分析
2017/03/21 Python
Python实现两个list对应元素相减操作示例
2017/06/09 Python
详解Python传入参数的几种方法
2019/05/16 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
python多线程分块读取文件
2019/08/29 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
承办会议欢迎词
2014/01/17 职场文书
八年级物理教学反思
2014/01/19 职场文书
建筑工地大门标语
2014/06/18 职场文书
2014年保管员工作总结
2014/11/18 职场文书
学校运动会简讯
2015/07/20 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书
python批量更改目录名/文件名的方法
2021/04/18 Python