领导被我的花式console.log吸引了!直接写入公司公共库!

背景简介

这几天代码评审,领导无意中看到了我本地代码的控制台,被我花里胡哨的console打印内容吸引了!

老板看见后,说我这东西有意思,花里胡哨的,他喜欢!

但是随即又问我,这么花里胡哨的东西,上生产会影响性能吧?我自信的说:不会,代码内有判断的,只有开发环境会打印

老板很满意,于是让我给其他前端同事分享一下,讲解下实现思路!最终,这个方法还被写入公司的公用utils库里,供大家使用!

console简介

console 是一个用于调试和记录信息的内置对象, 提供了多种方法,可以帮助开发者输出各种信息,进行调试和分析。

console.log()

用于输出一般信息,大家应该在熟悉不过了。

console.info() :

输出信息,与 console.log 类似,但在某些浏览器中可能有不同的样式。

console.warn() :

输出警告信息,通常会以黄色背景或带有警告图标的样式显示。

console.error() :

输出错误信息,通常会以红色背景或带有错误图标的样式显示。

console.table() :

以表格形式输出数据,适用于数组和对象。

例如:

const users = [{ name: '石小石', age: 18 },{ name: '刘亦菲', age: 18 }
];
console.table(users);

通过上述介绍,我们可以看出,原生的文本信息、警告信息、错误信息、数组信息打印出来的效果都很普通,辨识度不高!现在我们通过console.log来实现一些花里花哨的样式!

技术方案

console.log()

console.log() 可以接受任何类型的参数,包括字符串、数字、布尔值、对象、数组、函数等。最厉害的是,它支持占位符!

常用的占位符:

  • %s - 字符串
  • %d or %i - 整数
  • %f - 浮点数
  • %o - 对象
  • %c - CSS 样式

格式化字符串

console.log() 支持类似于 C 语言 printf 函数的格式化字符串。我们可以使用占位符来插入变量值。

const name = 'Alice';
const age = 30;
console.log('Name: %s, Age: %d', name, age); // Name: Alice, Age: 30

添加样式

可以使用 %c 占位符添加 CSS 样式,使输出内容更加美观。

console.log('%c This is a styled message', 'color: red; font-size: 20px;');

自定义样式的实现,其实主要是靠%c 占位符添加 CSS 样式实现的!

实现美化的信息打印

基础信息打印

我们创建一个prettyLog方法,用于逻辑编写

// 美化打印实现方法
const prettyLog = () => {const isEmpty = (value: any) => {return value == null || value === undefined || value === '';};const prettyPrint = (title: string, text: string, color: string) => {console.log(`%c ${title} %c ${text} %c`,`background:${color};border:1px solid ${color}; padding: 1px; border-radius: 2px 0 0 2px; color: #fff;`,`border:1px solid ${color}; padding: 1px; border-radius: 0 2px 2px 0; color: ${color};`,'background:transparent');};// 基础信息打印const info = (textOrTitle: string, content = '') => {const title = isEmpty(content) ? 'Info' : textOrTitle;const text = isEmpty(content) ? textOrTitle : content;prettyPrint(title, text, '#909399');};return {info};
};

上述代码定义了一个 prettyLog 函数,用于美化打印信息到控制台。通过自定义样式,输出信息以更易读和美观的格式呈现。

我们使用一下看看效果

// 创建打印对象
const log = prettyLog();// 不带标题
log.info('这是基础信息!');//带标题
log.info('注意看', '这是个男人叫小帅!');

info 方法用于输出信息级别的日志。它接受两个参数:textOrTitle 和 content。如果只提供一个参数,则视为内容并设置默认标题为 Info;如果提供两个参数,则第一个参数为标题,第二个参数为内容。最后调用 prettyPrint 方法进行输出。

错误信息打印

const prettyLog = () => {const isEmpty = (value: any) => {return value == null || value === undefined || value === '';};const prettyPrint = (title: string, text: string, color: string) => {// ...};const info = (textOrTitle: string, content 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/41088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

14270-02G 同轴连接器

型号简介 14270-02G是Southwest Microwave的2.4 mm 同轴连接器。这款连接器连接器采用不锈钢、铍铜合金、黄铜合金和 ULTEM 1000 等高质量材料,可能具有更好的耐腐蚀性、导电性和机械强度。金镀层可以提供更低的接触电阻和更好的耐腐蚀性。 型号特点 电缆的中心导体…

健康课程知识培训小程序网站如何学员教务管理

医学专业学生或是从业医生、护士等都需要不断学习巩固自己的技术和拓宽知识面,除了主要学习来源外,培训机构课程需求也是提升自身实力的方法,市场中也存在不少医药健康内容培训机构或是医院内部员工培训等。 运用雨科平台搭建医药健康内容培…

前端八股文 说一下盒模型

网页中任何一个元素都可以视为一个盒子,由里到外,盒模型包括外边界(margin)、边框(border)、内边界(padding)和内容(content)。 盒模型基本分为3种&#xff1…

k8s离线安装安装skywalking9.4

目录 概述资源下载Skywalking功能介绍成果速览实践rbacoapoap-svcuiui-svc 结束 概述 k8s 离线安装安装 skywalking9.4 版本,环境:k8s版本为:1.27.x 、spring boot 2.7.x spring cloud :2021.0.5 、spring.cloud.alibab&#xff1…

智慧消防视频监控烟火识别方案,筑牢安全防线

一、方案背景 在现代化城市中,各类小型场所(简称“九小场所”)如小餐馆、小商店、小网吧等遍布大街小巷,为市民生活提供了极大的便利。然而,由于这些场所往往规模较小、人员流动性大、消防安全意识相对薄弱&#xff0…

vue配置sql规则

vue配置sql规则 实现效果组件完整代码父组件 前端页面实现动态配置sql条件,将JSON结构给到后端,后端进行sql组装。 这里涉及的分组后端在组装时用括号将这块规则括起来就行,分组的sql连接符(并且/或者)取组里的第一个。…

【Linux】Linux常用指令合集精讲,一篇让你彻底掌握(万字真言)

文章目录 一、文件与目录操作1.1 ls - 列出目录内容1.2 cd - 切换目录1.3 pwd - 显示当前目录1.4 mkdir - 创建目录1.5 rmdir - 删除空目录1.6 rm - 删除文件或目录1.7 cp - 复制文件或目录1.8 mv - 移动或重命名文件或目录1.9 touch - 创建空文件或更新文件时间戳 二、文件内容…

Vue 详情实战涉及从项目初始化到功能实现、测试及部署的整个过程

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

《操作系统真象还原》学习笔记:第2章——编写MBR主引导记录

2.1 计算机的启动过程 载入内存: (1) 程序被加载器(软件或硬件)加载到内存某个区域 (2)CPU 的 cs:ip 寄存器被指向这个程序的起始地址 2.2 软件接力第一棒,BIOS 2.2.1 实模式下的…

Jenkins 使用 Publish over SSH进行远程访问

Publish over SSH 是 Jenkins 的一个插件,可以让你通过 SSH 将构建产物分发到远程服务器。以下是如何开启 Publish over SSH 的步骤: 一、安装 Publish over SSH 插件 在 Jenkins 中,进入 "Manage Jenkins" > "Manage Plugins"。选择 "Availab…

怎么用AI合成PPT?这5款风靡全球的AIPPT软件一定要知道!

当下我们已进入信息过载的时代,每天有无数的信息试图争夺我们的注意力,与此同时,我们也需要向别人展示和呈现信息,这就要求我们能够以最低的成本,在短时间内引起对方的注意,这其中最常用到的工具非PPT莫属。…

简易电阻、电容和电感测量仪-FPGA

通过VHDL语言编写程序用于设计电阻、电容和电感测量仪,通过使用试验箱进行验证是否设计正确,资料获取到咸🐟:xy591215295250 \\\或者联系wechat 号:comprehensivable 设计并制作--台数字显示的电阻、电容和电感参数测试…

C++ 空间和时间高效的二项式系数(Space and time efficient Binomial Coefficient)

这里函数采用两个参数n和k,并返回二项式系数 C(n, k) 的值。 例子: 输入: n 4 和 k 2 输出: 6 解释: 4 C 2 等于 4!/(2!*2!) 6 输入: n 5 和 k 2 输出: 10 解释: 5 C …

海思SD3403/SS928V100开发(14)WIFI模块RTL8821驱动调试

1.前言 芯片平台: 海思SD3403/SS928V100 操作系统平台: Ubuntu20.04.05【自己移植】 WIFI模块: LB-LINK的RTL8821 2. 调试记录 参考供应商提供的操作手册 2.1 lsusb查看设备 2.2 编译供应商提供的驱动 2.2.1 修改Makefile 2.2.2 编译报错 解决办法: 将Makefile中arm…

linux中 nginx+tomcat 部署方式 tomcat挂掉设置自动启动

在Linux环境下,要实现当Tomcat挂掉后自动重启,可以通过编写Shell脚本结合cron定时任务或者使用系统守护进程(如Systemd、Upstart或SysVinit)来完成。 使用Shell脚本和cron定时任务 编写检查并重启Tomcat的Shell脚本:首…

取证与数据恢复:冷系统分析,实时系统分析与镜像分析之间的过渡办法

天津鸿萌科贸发展有限公司是 ElcomSoft 系列取证软件的授权代理商。 ElcomSoft 系列取证软件 ElcomSoft 系列取证软件支持从计算机和移动设备进行数据提取、解锁文档、解密压缩文件、破解加密容器、查看和分析证据。 计算机和手机取证的完整集合硬件加速解密最多支持10,000计…

MMSC物料库位扩充

MMSC物料库位扩充 输入事务码MMSC: 回车后添加新的库位即可: 代码实现,使用BDC *&------------------------------------------------* *&BDC的定义 *&------------------------------------------------* DATA gt_bdcdata T…

ggrcs包4.0版本发布—重新对密度图宽度进行了设计

目前本人写的ggrcs包新的4.0版本已经在CRAN上线,目前支持逻辑回归(logistic回归)、cox回归和多元线性回归。 需要的可以使用代码安装 install.packages("ggrcs")如果原来安装了旧版本,重新在安装一次就可以升级到新版…

如何选择小红书矩阵系统

在内容营销领域,小红书已成为一个不可忽视的平台,尤其是对于品牌和个人创作者来说。小红书矩阵系统,指的是一系列策略和工具,它们可以帮助用户在小红书上高效地管理和分发内容。本文将探讨如何选择适合自己需求的小红书矩阵系统&a…

YOLOv8数据集可视化[目标检测实践篇]

先贴代码,后面再补充解析。 这个篇章主要是对标注好的标签进行可视化,虽然比较简单,但是可以从可视化代码中学习到YOLOv8是如何对标签进行解析的。 下面直接贴代码: import cv2 import numpy as np import osdef read_det_labels(label_file_path):with open(labe…