ホームページ >ウェブフロントエンド >jsチュートリアル >Node.jsでreadlineモジュールとutilモジュールを使用する方法

Node.jsでreadlineモジュールとutilモジュールを使用する方法

亚连
亚连オリジナル
2018-06-02 11:49:391485ブラウズ

この記事では主に Node.js の readline モジュールと util モジュールの使用方法を紹介し、参考として提供します。

1. readlineモジュールを使ってストリームデータを1行ずつ読み込む

1.1. Interfaceオブジェクトを作成する

readlineモジュールでは、ストリームデータを1行ずつ読み込む処理を実現しています。インターフェイスオブジェクト。したがって、最初にインターフェイス オブジェクトを作成する必要があります。readline モジュールでは、readline.createInterface(options) メソッドを使用してインターフェイス オブジェクトを作成できます。 入力: 属性値はオブジェクトです。ストリームの読み取りに使用でき、読み取りデータのソースを指定するために使用されます。

  1. output: 属性値はストリームデータを書き込むために使用できるオブジェクトであり、データの出力先を指定するために使用されます。

  2. computer: 属性値はタブ補完処理を指定する関数です。関数のパラメータ値は、行から読み取られたタブ文字の前のデータに自動的に設定されます。関数は、タブ補完に使用されるすべての一致する文字列と、行から読み取られたタブ文字の前のデータから構成される配列を返す必要があります。 。

  3. ターミナル: この属性はブール型の属性です。入力データ ストリームをターミナルのようにリアルタイムで出力する必要があり、出力データに ANSI/VT100 制御文字列を書き込む必要がある場合、この属性は次のように指定する必要があります。値は true に設定され、デフォルトの属性値は出力属性値オブジェクトの isTTY 属性値と同じになります。

  4. // 输入 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 行ずつ読み取ります

  5. 元の fs.js ファイルの内容
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`: 文字列パラメータの指定に使用されます

  1. *`%d`: 整数や浮動小数点を含む数値パラメータの指定に使用されますポイント番号

  2. *`%j`: `JSON` オブジェクトの指定に使用されます

  3. *`%%`: パーセント記号の指定に使用されます

  4. * (フォーマット文字列で使用される場合)パラメータが format メソッドで使用される `format` パラメータ以外のパラメータよりも多い場合、フォーマット文字列内のパラメータが多いほど、`console.log(util.format('%s: %s','one) は置き換えられません。 '));`

  5. *フォーマット文字列で使用されるパラメータの数が、`format` パラメータを除き、`format` メソッドで使用される他のパラメータよりも少ない場合は、` より多くの型がある場合format` メソッドでパラメーター値を指定すると、スペースで区切られた文字列に自動的に変換されます。

  6. +inspect(object,[options]) は、オブジェクトの情報を含む文字列を返します。これは、プロセスで非常に役立ちます。

*`showHidden78180fd7e2f5f09e138c95a71ada14e6`true` の場合、`object` の列挙不可能なシンボルとプロパティも結果に含まれます。デフォルトは `false' です。

  1. *` Depthd80b5def5ed1be6e26d91c2709f14170` は、`object` をフォーマットするときの再帰の数を指定します。これは、`null` を無限に再帰的に渡す場合に便利です。

    *`colors78180fd7e2f5f09e138c95a71ada14e6`true` の場合、出力スタイルは `ANSI` カラー コードを使用します。

  2. *`customInspect78180fd7e2f5f09e138c95a71ada14e6`If `false` の場合、`object` のカスタム `inspect( Depth,opts)` 関数は呼び出されません。デフォルトは `true` です。

  3. *`showProxy

  4. *`maxArrayLengthd80b5def5ed1be6e26d91c2709f14170` は、配列と ` が持つ要素の最大数を指定します。 TypedArray` には次の値を含めることができます。デフォルトは `100` です。すべての配列要素を表示する場合は `null` に設定し、配列要素を表示しない場合は負の数値を設定します。オブジェクトのキーは複数の行の長さに分割されます。オブジェクトを単一の行としてフォーマットするには、`Infinity` に設定します。

  5. +カスタム util.inspect color

  6. をグローバルに設定できます。 util.inspect.styles プロパティと util.inspect.colors プロパティを使用して、util.inspect のカラー出力をカスタマイズします
  7. 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] } } }
     * **/

    上記は、将来すべての人に役立つことを願っています。

  8. 関連記事:
  9. vueカルーセルチャートプラグインvue-concise-sliderの使い方

vueページを離れた後に関数を実行する例

vueページの更新やバックパラメータの損失の問題を解決する

以上がNode.jsでreadlineモジュールとutilモジュールを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。