# 你不能錯過的Node.js指南:實用X必用X拿來即用的300段程式碼+173個範例
另外也參考之前文章中提到的幾本 :
# 不一樣的Node.js :用JavaScript打造高效能的前後台網頁程式
# 深入淺出Node.js
# Node.js 實戰手冊
本系列之前的測試文章參考 :
# 關於 Node.js
# 如何更新樹莓派的 Node.js
# Node.js 學習筆記 (一) : 在 Windows 安裝 Node.js
1. 用 console.log() 或 console.info() 輸出訊息 :
Node.js 的訊息輸出函數有 console.log() 與 console.info(), 兩者用法與功能完全一樣, 都是向標準輸出介面 (螢幕) 輸出字串 :
> console.log("OK")
OK
undefined
> console.info("OK")
OK
undefined
與 C 語言的 printf() 類似也可以輸出格式化字串, 字串資料使用 %s 格式輸出, 例如 :
> console.log("I am %s years old", 23)
I am 23 years old
undefined
> console.info("I am %s years old", 23)
I am 23 years old
undefined
> console.log("%s", "Hello", "World") #一個格式多個輸出字串
Hello World
undefined
> console.log("%s! %s!", "Hello", "World") #多個格式多個輸出字串
Hello! World!
undefined
> console.log("%")
%
undefined
> console.log("%%")
%%
undefined
> console.log(2+0.1) #先做運算再轉成字串輸出
2.1
undefined
> console.log("%d", 2, 0.1) #一個格式多個輸出字串
2 0.1
undefined
> console.log("%d-%d", 2, 0.1) #含有特殊符號
2-0.1
undefined
> console.log("%d", 2+0.1, 2-0.1, 2*0.1, 2/0.1) #一個格式多個輸出字串
2.1 1.9 0.2 20
undefined
> console.log("%d", "2+0.1") #格式錯誤輸出 NaN
NaN
undefined
> console.log(2/0) #除以 0 得 Infinity
Infinity
undefined
不過, 數值用 %s 輸出或數字字串用 %d 輸出也是可以的, Node.js 會自動轉型, 事實上, 任何型態都可以用 %s 格式輸出, 但 %d 則必須能轉成數值者才可以, 否則會輸出 NaN, 例如 :
> console.log("%s", 2018) #任何型態都可以用 %s 格式輸出
2018
undefined
> console.log("%d", "2018") #必須是可數值化者才可用 %d 輸出
2018
undefined
> console.log("%d", "2018-03-16") #含有非數值字元無法轉成數值
NaN
undefined
> console.log("%d", true, false) #true 用 %d 格式化會變成 1, 但 false 還是 false
1 false
undefined
> console.log("%s", true, false)
true false
undefined
若 console.log() 內是邏輯運算式, 則會在運算後輸出 true 或 false :
> console.log(1>2)
false
undefined
> console.log(2>=2)
true
undefined
> console.log(2<=2)
true
undefined
> console.log(1<=2 && 2>=2)
true
undefined
> console.log(1<=2 || 1==2)
true
undefined
JSON 格式的 Object 物件變數 (類似關聯式陣列或 Python 的 dict) 須以 %j 格式輸出, 例如 :
> var member={
... name:"Tony",
... gender:"Male",
... age:50}
undefined
> console.log("%j", member)
{"name":"Tony","gender":"Male","age":50}
undefined
也可以將物件直接放在參數中 :
> console.log("%j", {name:"Tony",gender:"Male",age:50})
{"name":"Tony","gender":"Male","age":50}
undefined
如果只有傳入一個格式參數, 則會將其當成一般字串輸出, 例如 :
> console.log("%s")
%s
undefined
> console.log("%d")
%d
undefined
> console.log("%j")
%j
undefined
2. 用 console.err() 或 console.warn() 輸出錯誤訊息 :
這兩個函數用來輸出錯誤訊息, 用法與功能完全一樣, 與 console.log() 相同都可格式化輸出, 例如下面的程式 read_file.js 利用 fs 函式庫來讀取同目錄下的檔案 myfile.txt, 但該檔案實際上並不存在, 因此會出現讀取錯誤 :
#read_file.js
var fs=require("fs");
var file="myfile.txt";
var encoding="UTF-8";
fs.readFile(file, encoding, function(err, data) {
if (err) {
console.error("Error:\n%s", err);
console.warn("Warn:\n%s", err);
}
else {
console.log(data);
}
});
執行結果如下 :
D:\test>node read_file.js
Error:
Error: ENOENT: no such file or directory, open 'D:\test\myfile.txt'
Warn:
Error: ENOENT: no such file or directory, open 'D:\test\myfile.txt'
也可以用 2> 符號將輸出重檔向至檔案, 例如 :
D:\test>node read_file.js 2> err.txt
D:\test>type err.txt
Error:
Error: ENOENT: no such file or directory, open 'D:\test\myfile.txt'
Warn:
Error: ENOENT: no such file or directory, open 'D:\test\myfile.txt'
沒有留言 :
張貼留言