以下是写入 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
转换为 Web 流并写入它
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 “Web 流式处理方法”。
写入 stderr 的方法与写入 stdout 类似
console.error()
写入。有关更多信息,请参阅上一节。
以下是读取 stdin 的选项
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
转换为 Web 流
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 “Web 流式处理方法”。
内置模块 `'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()
:从可迭代对象创建可读流”可写流
从以下内容创建 ReadableStream
从 ReadableStream 读取
转换 ReadableStream
使用 WritableStream