Node.js Color 模塊實現入門淺析
Node.js 中有不少常用的 Color 模塊,例如 chalk、colors.js、cli-color 等,通過這些模塊我們輸出各種帶顏色、方面區分或者更酷的日誌以及 CLI 工具提示。那麼今天帶大家簡單了解一下 Color 模塊的實現。
ANSI escape code
與前端上對元素內的文字加上了 CSS 修飾一樣。terminal 中輸出的文字包含顏色也是因為文字的數據跟隨了顏色描述的數據。而要了解 terminal 上的顏色,首先需要了解 ANSI escape code。
顏色修飾數據對於 terminal 而言,是跟 "
" 類似的讓顯示出現變化的一種轉義字元。與常見的轉義字元不同,修飾顏色字元(在大部分平台上)按照 CSI codes 的格式以 "ESC" + "[" 字元開頭,形如:ESC[ + code1;code2;...;codeN + m 結束(其中的 code 即修飾顏色的數據)。例如:
echo -e " 33[31;42mhello"; # 控制字元[紅色文字;綠色背景結束符號helloecho -e " 33[0m"; # 重置顏色修飾echo -e " 33[33mworld"; # 控制字元[黃色文字結束符號worldecho -e " 33[0m"; # 重置顏色修飾
各位用戶(win除外)可以在 terminal 上嘗試一下執行效果,或者使用 Node.js (包括win)運行以下代碼試試:
console.log(" 33[31;42mhello"); // 控制字元[紅色文字;綠色背景結束符號helloconsole.log(" 33[0m"); // 重置顏色修飾console.log(" 33[33mworld"); // 控制字元[黃色文字結束符號worldconsole.log(" 33[0m"); // 重置顏色修飾
執行效果:
注意:ESC 轉義字元在 ASCII 碼中十進位是 27,八進位是 033,十六進位是 0x1B。所以在 Node.js 中除了