この記事では主に Node.js の readline モジュールと util モジュールの使用方法を紹介し、参考として提供します。
1. readlineモジュールを使ってストリームデータを1行ずつ読み込む
1.1. Interfaceオブジェクトを作成する
readlineモジュールでは、ストリームデータを1行ずつ読み込む処理を実現しています。インターフェイスオブジェクト。したがって、最初にインターフェイス オブジェクトを作成する必要があります。readline モジュールでは、readline.createInterface(options) メソッドを使用してインターフェイス オブジェクトを作成できます。 入力: 属性値はオブジェクトです。ストリームの読み取りに使用でき、読み取りデータのソースを指定するために使用されます。
output: 属性値はストリームデータを書き込むために使用できるオブジェクトであり、データの出力先を指定するために使用されます。
computer: 属性値はタブ補完処理を指定する関数です。関数のパラメータ値は、行から読み取られたタブ文字の前のデータに自動的に設定されます。関数は、タブ補完に使用されるすべての一致する文字列と、行から読み取られたタブ文字の前のデータから構成される配列を返す必要があります。 。
ターミナル: この属性はブール型の属性です。入力データ ストリームをターミナルのようにリアルタイムで出力する必要があり、出力データに ANSI/VT100 制御文字列を書き込む必要がある場合、この属性は次のように指定する必要があります。値は true に設定され、デフォルトの属性値は出力属性値オブジェクトの isTTY 属性値と同じになります。
// 输入 exit, quit,q这三个任意之一的时候,会退出 const readline = require('readline'); let rl = readline.createInterface({ input: process.stdin, output: process.stdout, completer: completer }); rl.on('line', (line) => { if (line === 'exit' || line === 'quit' || line === 'q') { rl.close(); } else { console.log('您输入了:', line); } }); rl.on('close', () => { console.log('行数据读取操作被终止'); }); function completer(line) { const completions = '.help .error .exit .quit .q'.split(' '); let hits = completions.filter((c) => { return c.indexOf(line) === 0; }); return [hits.length ? hits : completions, line] }
1.2. Interface オブジェクトを使用してファイルを 1 行ずつ読み取ります
console.log('this is line 1'); console.log('this is line 2'); console.log('this is line 3'); console.log('this is line 4'); console.log('this is line 5');
コードの内容
const readline = require('readline'); const fs = require('fs'); let file = fs.createReadStream('./fs.js'); let out = fs.createWriteStream('./anotherFs.js'); let index = 1; out.write('/*line' + index.toString() + ": */"); let rl = readline.createInterface({ input: file, output: out, terminal: true }); rl.on('line', (line) => { if (line === '') { rl.close(); } else { index++; out.write('/*line' + index.toString() + ': */'); } });
生成された anotherFs.js ファイルの内容
/*line1: */console.log('this is line 1'); /*line2: */console.log('this is line 2'); /*line3: */console.log('this is line 3'); /*line4: */console.log('this is line 4'); /*line5: */console.log('this is line 5');/*line6: */
2提供されている util モジュールを使用します
+format メソッド
の一部のメソッドは、C 言語の printf メソッドに似ており、最初のパラメータ値はフォーマット文字列として使用され、他のパラメータ値は使用されるパラメータとして使用されます。書式設定された文字列を返します。util.format('%d 個のパラメータを入力しました。パラメータ値は %s,%s,%s',3,'nice','excelent','holy ');
フォーマット文字列では、パラメータ指定記号を使用できます
*`%s`: 文字列パラメータの指定に使用されます
*`%d`: 整数や浮動小数点を含む数値パラメータの指定に使用されますポイント番号
*`%j`: `JSON` オブジェクトの指定に使用されます
*`%%`: パーセント記号の指定に使用されます
* (フォーマット文字列で使用される場合)パラメータが format メソッドで使用される `format` パラメータ以外のパラメータよりも多い場合、フォーマット文字列内のパラメータが多いほど、`console.log(util.format('%s: %s','one) は置き換えられません。 '));`
*フォーマット文字列で使用されるパラメータの数が、`format` パラメータを除き、`format` メソッドで使用される他のパラメータよりも少ない場合は、` より多くの型がある場合format` メソッドでパラメーター値を指定すると、スペースで区切られた文字列に自動的に変換されます。
+inspect(object,[options]) は、オブジェクトの情報を含む文字列を返します。これは、プロセスで非常に役立ちます。
*`showHidden
*`colors
*`customInspect
*`showProxy
*`maxArrayLength
+カスタム util.inspect color
const util = require('util'); console.log(util.format('您输入了%d个参数,参数值分别为%s,%s,%s', 3, 'nice', 'excelent', 'holy')); //您输入了3个参数,参数值分别为nice,excelent,holy console.log(util.format('一个JSON对象%j', {'name': 'jack', 'age': 25})); // 一个JSON对象{"name":"jack","age":25} console.log(util.format('一个百分号%'));// 一个百分号% console.log(util.format('%s:%s', 'one'));// one:%s console.log(util.format('%s', 'one', 'two', 'three', {'name': 'jack'})); function test(one, two) { return one + two; } let parent = new Object(); parent.name = 'parent'; parent.func = test; let child1 = new Object(); child1.name = 'child1'; parent.child1 = child1; let child2 = new Object(); child2.name = 'child2'; child1.child = child2; let child3 = new Object(); child3.name = 'child3'; child2.child = child3; child2.inspect = function (depth) { return util.inspect(this, {depth: depth - 2, customInspect: false}) }; console.log(util.inspect(parent, {customInspect: true, depth: 4})); /** * { name: 'parent', * func: [Function: test], * child1: * { name: 'child1', * child: { name: 'child2', child: [Object], inspect: [Function] } } } * **/
上記は、将来すべての人に役立つことを願っています。
以上がNode.jsでreadlineモジュールとutilモジュールを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。