有三個選項可以寫入 stdout
console.log(format, ...args)
寫入 stdout,並始終附加換行符號 '\n'
(即使在 Windows 上也是如此)。第一個引數可以包含佔位符,其解釋方式與 util.format()
相同
console.log('String: %s Number: %d Percent: %%', 'abc', 123);
const obj = {one: 1, two: 2};
console.log('JSON: %j Object: %o', obj, obj);
// Output:
// 'String: abc Number: 123 Percent: %'
// 'JSON: {"one":1,"two":2} Object: { one: 1, two: 2 }'
第一個引數之後的所有引數始終會顯示在輸出中,即使沒有足夠的佔位符。
process.stdout
是 stream.Readable
的一個實例。這表示我們可以使用它就像任何其他 Node.js 串流一樣,例如
process.stdout.write('two');
process.stdout.write(' words');
process.stdout.write('\n');
前述程式碼等同於
console.log('two words');
請注意,在這種情況下結尾沒有換行符號,因為 console.log()
始終會新增一個換行符號。
如果我們對大量資料使用 .write()
,我們應該考慮反壓力,如 §9.5.2.1 “writable.write(chunk)
” 所述。
下列食譜適用於 process.stdout
:§11.4 “Node.js 串流食譜”。
我們可以將 process.stdout
轉換為網路串流並寫入其中
import {Writable} from 'node:stream';
const webOut = Writable.toWeb(process.stdout);
const writer = webOut.getWriter();
try {
await writer.write('First line\n');
await writer.write('Second line\n');
await writer.close();
finally {
} .releaseLock()
writer }
下列食譜適用於 webOut
:§11.5 “網路串流食譜”。
寫入 stderr 的方式類似於寫入 stdout
console.error()
寫入其中。有關更多資訊,請參閱前一節。
以下是從 stdin 讀取的選項
'node:readline'
。process.stdin
是 stream.Writable
的執行個體。這表示我們可以使用它就像任何其他 Node.js 串流
// Switch to text mode (otherwise we get chunks of binary data)
process.stdin.setEncoding('utf-8');
for await (const chunk of process.stdin) {
console.log('>', chunk);
}
下列食譜適用於 webIn
:§11.4 “Node.js 串流食譜”。
我們必須先將 process.stdin
轉換為網路串流
import {Readable} from 'node:stream';
// Switch to text mode (otherwise we get chunks of binary data)
process.stdin.setEncoding('utf-8');
const webIn = Readable.toWeb(process.stdin);
for await (const chunk of webIn) {
console.log('>', chunk);
}
下列食譜適用於 webIn
:§11.5 “網路串流食譜”。
'node:readline'
從 stdin 讀取內建模組 'node:readline'
讓我們可以提示使用者互動式輸入資訊,例如
import * as fs from 'node:fs';
import * as readline from 'node:readline/promises';
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
;
})
const filePath = await rl.question('Please enter a file path: ');
.writeFileSync(filePath, 'Hi!', {encoding: 'utf-8'})
fs
.close(); rl
有關模組 'node:readline'
的更多資訊,請參閱
可讀取串流
Readable.from()
:從可迭代物件建立可讀取串流”for-await-of
從可讀取串流讀取區塊”
'node:readlines'
從可讀取串流讀取行”可寫入串流
從以下建立 ReadableStream
從 ReadableStream 讀取
轉換 ReadableStreams
使用 WritableStreams