領導被我的花式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.pswp.cn/diannao/41088.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41088.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41088.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

后端工作之一:CrapApi —— API接口管理系統部署

一個API接口的網絡請求都有這些基本元素構成: API接口大多數是由后端編寫,前端開發人員進行請求調用 就是一個網絡請求的流程。 API(Application Programming Interface)接口是現代軟件開發中不可或缺的一部分。它們提供了一種…

14270-02G 同軸連接器

型號簡介 14270-02G是Southwest Microwave的2.4 mm 同軸連接器。這款連接器連接器采用不銹鋼、鈹銅合金、黃銅合金和 ULTEM 1000 等高質量材料,可能具有更好的耐腐蝕性、導電性和機械強度。金鍍層可以提供更低的接觸電阻和更好的耐腐蝕性。 型號特點 電纜的中心導體…

過擬合和欠擬合的概念

過擬合和欠擬合的概念 過擬合(Overfitting)是指機器學習模型在訓練數據上表現得非常好,但在新數據(測試集或實際應用中的數據)上卻表現不佳的現象。這種情況通常發生在模型復雜度過高,導致它過度適應了訓練…

健康課程知識培訓小程序網站如何學員教務管理

醫學專業學生或是從業醫生、護士等都需要不斷學習鞏固自己的技術和拓寬知識面,除了主要學習來源外,培訓機構課程需求也是提升自身實力的方法,市場中也存在不少醫藥健康內容培訓機構或是醫院內部員工培訓等。 運用雨科平臺搭建醫藥健康內容培…

前端八股文 說一下盒模型

網頁中任何一個元素都可以視為一個盒子,由里到外,盒模型包括外邊界(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莫屬。…

Java集合框架:深入探索與性能優化指南

引言 Java集合框架是Java標準庫中用于存儲和操作對象集合的一套工具。它提供了一套統一的接口和類,使得開發者可以高效地處理對象集合,而無需關心底層的實現細節。Java集合框架主要包括List、Set、Map等接口及其實現類。本文將詳細介紹Java中的集合框架,并分享如何選擇和使用…

簡易電阻、電容和電感測量儀-FPGA

通過VHDL語言編寫程序用于設計電阻、電容和電感測量儀,通過使用試驗箱進行驗證是否設計正確,資料獲取到咸🐟:xy591215295250 \\\或者聯系wechat 號:comprehensivable 設計并制作--臺數字顯示的電阻、電容和電感參數測試…

一篇說清楚大端和小端

端是什么? “我們常說的大端小端模式是計算機中 字節順序(Endianness) 常見的兩種表現形式。(此外還有混合序 (Middle-Endian)) “endian”一詞來源于十八世紀愛爾蘭作家喬納森斯威夫特(Jonathan Swift)的小說《格列佛…

Linux上從NCBI序列

要下載NCBI Gene數據庫中所有Gene ID的FASTA格式序列,可以使用以下方法: 使用Entrez Direct命令行工具 安裝Entrez Direct: conda install bioconda::entrez-direct使用Entrez Direct下載FASTA格式序列: esearch -db gene -query "(Triticum aes…

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腳本:首…