中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Node.js控制臺彩色輸出的方法與原理實例詳解

發布時間:2020-08-19 21:11:40 來源:腳本之家 閱讀:420 作者:Leo 欄目:web開發

前言

我們都知道,在nodejs環境下使用普通的console.log,console.error,console.info輸出都是不會有顏色的,如果你不知道,那你現在知道啦😏。在這種情況下,如果我們需要彩色輸出,則通常通過chalk這個node模塊來實現,

chalk使用方法

基本用法

const chalk = require('chalk')
console.log(chalk.red.bold.bgWhite('Leo\'s Blog'))

上面代碼執行的結果如下,Leo's Blog 加粗,字體顏色是紅色,背景顏色是白色。

注意:背景顏色要在 bg 后面加上具體的顏色,顏色的第一個字母大寫。

在 HTML 中支持 RGB 顏色,在這里同樣支持,而且是支持所有 HTML 中支持的顏色,如十六進制顏色。這里僅僅說明十六進制顏色。

下面的代碼會和上面的代碼實現相同的效果。

const chalk = require('chalk')
console.log(chalk.rgb(255,0,0).bold.bgRgb(255,255,255)('Leo\'s Blog'))

使用模板

該模塊有一個很方便的用法就是支持模板輸出,也就是說,不管在字符串中的哪個位置想改變輸出的顏色,都是可以的。

const chalk = require('chalk')
console.log(chalk`{red.bold.bgWhite Leo\'s Blog}`)

當然,也可以使用 RGB 顏色值。

const chalk = require('chalk')
console.log(chalk`{rgb(255,0,0).bold.bgRgb(255,255,255) Leo\'s Blog}`)

Node.js控制臺彩色輸出的方法與原理實例詳解
四種方式的輸出

常見形式

我們經常看到的警告、錯誤提示就是這么來的

const chalk = require('chalk')

const error = chalk.bold.red;
const warning = chalk.keyword('orange')

console.log(error('Error!'))
console.log(warning('Warning!'))

Node.js控制臺彩色輸出的方法與原理實例詳解
錯誤和警告提示

常用API

樣式

  • reset - 樣式重置
  • bold - 加粗
  • dim - 淺高亮
  • italic - 斜體
  • underline - 下劃線
  • inverse- 反轉前景和背景色
  • hidden - 隱藏內容
  • strikethrough - 刪除線
  • visible- 顯示chalk level > 0 的內容

前景色關鍵字(非全支持)

  • black
  • red
  • green
  • yellow
  • blue
  • magenta
  • cyan
  • white
  • blackBright (alias: gray, grey)
  • redBright
  • greenBright
  • yellowBright
  • blueBright
  • magentaBright
  • cyanBright
  • whiteBright

背景色關鍵字(非全支持)

  • bgBlack
  • bgRed
  • bgGreen
  • bgYellow
  • bgBlue
  • bgMagenta
  • bgCyan
  • bgWhite
  • bgBlackBright (alias: bgGray, bgGrey)
  • bgRedBright
  • bgGreenBright
  • bgYellowBright
  • bgBlueBright
  • bgMagentaBright
  • bgCyanBright
  • bgWhiteBright

更多API可以看看官方文檔。

chalk讓控制臺輸出樣式多變的原理

其原理最重要的一個知識點就是ANSI Escape code.

ASCII編碼中有些字符是不能用來在終端中打印顯示的,比如'\a' 0x7代表響鈴,'\n' 0x0A代表換行,這些字符被稱為控制符。

而其中的一個控制符 '\e' 0x1B比較特殊,這個字符代表 ESC ,即鍵盤上 ESC 按鍵的作用。ESC 是單詞 escape 的縮寫,即逃逸的意思。文本中出現這個控制符,表示接下來的字符是ANSI Escape code編碼。

而ANSI Escape code編碼中有專門控制字符顏色的控制符,例如:\e[31;44;4;1m

其意義如下:

  • \e 代表開始ANSI Escape code
  • [ 代表轉義序列開始符 CSI,Control Sequence Introducer
  • 31;44;4;1 代表以; 分隔的文本樣式控制符,其中 31 代表文本前景色為紅色,44代表背景為藍色,4代表下劃線,1代表加粗
  • m 代表結束控制符序列

我們可以在終端中輸入如下命令:

echo -e "\e[37;44;4;1mLEO\e[0m"

會有如下輸出,帶下劃線的LEO字樣:

Node.js控制臺彩色輸出的方法與原理實例詳解
echo-leo

因為 \e 控制符的16進制碼為 0x1B , 8 進制碼為 033 ,也可以用以下寫法達到同樣效果:

echo -e "\e[37;44;4;1mLEO\e[0m"
echo -e "\x1b[37;44;4;1mLEO\x1b[0m"
echo -e "\x1B[37;44;4;1mLEO\x1B[0m"
echo -e "\033[37;44;4;1mLEO\033[0m"

Node.js控制臺彩色輸出的方法與原理實例詳解
echo

通過維基百科,我查到有以下參數控制符:

代碼 作用 備注
0 重置/正常 關閉所有屬性。
1 粗體或增加強度
2 弱化(降低強度) 未廣泛支持。
3 斜體 未廣泛支持。有時視為反相顯示。
4 下劃線
5 緩慢閃爍 低于每分鐘150次。
6 快速閃爍 MS-DOS ANSI.SYS;每分鐘150以上;未廣泛支持。
7 反顯 前景色與背景色交換。
8 隱藏 未廣泛支持。
9 劃除 字符清晰,但標記為刪除。未廣泛支持。
10 主要(默認)字體
11–19 替代字體 選擇替代字體{\displaystyle n-10}{\displaystyle n-10}。
20 尖角體 幾乎無支持。
21 關閉粗體或雙下劃線 關閉粗體未廣泛支持;雙下劃線幾乎無支持。
22 正常顏色或強度 不強不弱。
23 非斜體、非尖角體
24 關閉下劃線 去掉單雙下劃線。
25 關閉閃爍
27 關閉反顯
28 關閉隱藏
29 關閉劃除
30–37 設置前景色 參見下面的顏色表。
38 設置前景色 下一個參數是5;n或2;r;g;b,見下。
39 默認前景色 由具體實現定義(按照標準)。
40–47 設置背景色 參見下面的顏色表。
48 設置背景色 下一個參數是5;n或2;r;g;b,見下。
49 默認背景色 由具體實現定義(按照標準)。
51 Framed
52 Encircled
53 上劃線
54 Not framed or encircled
55 關閉上劃線
60 表意文字下劃線或右邊線 幾乎無支持。
61 表意文字雙下劃線或雙右邊線
62 表意文字上劃線或左邊線
63 表意文字雙上劃線或雙左邊線
64 表意文字著重標志
65 表意文字屬性關閉 重置60–64的所有效果。
90–97 設置明亮的前景色 aixterm(非標準)。
100–107 設置明亮的背景色 aixterm(非標準)。

顏色編碼表如下:

名稱 前景色代碼 背景色代碼
30 40
31 41
32 42
33 43
34 44
品紅 35 45
36 46
37 47
亮黑(灰) 90 100
亮紅 91 101
亮綠 92 102
亮黃 93 103
亮藍 94 104
亮品紅 95 105
亮青 96 106
亮白 97 107

示例:

\e[31m 紅色
\e[36;5;1;4m 緩慢閃爍的青色加粗帶下劃線字體

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德州市| 怀集县| 美姑县| 香格里拉县| 福贡县| 福鼎市| 凌源市| 炉霍县| 武清区| 龙山县| 河间市| 梓潼县| 西乌珠穆沁旗| 鹤岗市| 开平市| 乡宁县| 高密市| 宜兰县| 汨罗市| 重庆市| 图木舒克市| 开鲁县| 顺义区| 安平县| 苏尼特左旗| 慈溪市| 唐海县| 静安区| 库伦旗| 呼伦贝尔市| 化德县| 都匀市| 麻城市| 图木舒克市| 石阡县| 安溪县| 大竹县| 黄骅市| 社旗县| 青冈县| 工布江达县|