Heim  >  Artikel  >  Web-Frontend  >  So verwenden Sie das Readline-Modul und das Util-Modul in Node.js

So verwenden Sie das Readline-Modul und das Util-Modul in Node.js

亚连
亚连Original
2018-06-02 11:49:391445Durchsuche

In diesem Artikel wird hauptsächlich die Verwendung des Readline-Moduls und des Util-Moduls von Node.j vorgestellt. Jetzt teile ich es mit Ihnen und gebe es als Referenz.

1. Verwenden Sie das Readline-Modul, um Stream-Daten Zeile für Zeile zu lesen

1.1 Erstellen Sie im Readline-Modul ein Schnittstellenobjekt Verwendung des Schnittstellenobjekts Um die zeilenweise Verarbeitung von Lesestromdaten zu realisieren. Daher müssen Sie zunächst ein Interface-Objekt über die Methode „readline.createInterface“ (Optionen) erstellen >

Eingabe: Attribut Der Wert ist ein Objekt, das zum Lesen von Stream-Daten verwendet werden kann und zur Angabe der Quelle der gelesenen Daten verwendet wird.

  1. Ausgabe: Der Attributwert ist ein Objekt, das zum Schreiben von Stream-Daten verwendet werden kann und zur Angabe des Ausgabeziels der Daten verwendet wird.

  2. Computer: Der Attributwert ist eine Funktion, die zur Angabe der Tab-Vervollständigungsverarbeitung verwendet wird. Der Parameterwert der Funktion wird automatisch auf die Daten vor dem aus der Zeile gelesenen Tabulatorzeichen gesetzt. Die Funktion sollte ein Array zurückgeben, das aus allen passenden Zeichenfolgen besteht, die für die Tabulatorvervollständigung verwendet werden, und den aus der Zeile gelesenen Daten .

  3. Terminal: Dieses Attribut ist ein boolesches Attribut, wenn der Eingabedatenstrom wie bei einem Terminal in Echtzeit ausgegeben werden muss und die ANSI/VT100-Steuerung in geschrieben werden muss Ausgabedaten Wenn es sich um eine Zeichenfolge handelt, muss der Attributwert auf true gesetzt werden. Der Standardattributwert entspricht dem isTTY-Attributwert des Ausgabeattributwertobjekts.

  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]
    }
  5. 1.2. Verwenden Sie das Interface-Objekt, um die Datei Zeile für Zeile zu lesen

    Der Inhalt der ursprünglichen fs.js-Datei
  6. 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');
Codeinhalt

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() + ': */');
  }
});

Der Inhalt der generierten anotherFs.js-Datei

/*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. Verwenden Sie einige im Util-Modul bereitgestellte Methoden

+Formatierungsmethode

Ähnlich Verwenden Sie die printf-Methode in der C-Sprache, verwenden Sie den ersten Parameterwert als Formatzeichenfolge, verwenden Sie die anderen Parameterwerte als jeden in der Formatzeichenfolge verwendeten Parameter und geben Sie eine formatierte Zeichenfolge zurück.util.format('Sie geben %d ein Parameter und die Parameterwerte sind %s, %s, %s', 3, 'nice', 'excelent', 'holy');

Parameterspezifikationssymbole, die in der Formatzeichenfolge

*`%s`: wird zum Angeben von Zeichenfolgenparametern verwendet.


    *`%d`: wird zum Angeben numerischer Parameter verwendet, einschließlich Ganzzahlen und Gleitkommazahlen Zahlen
  1. *`%j`: wird verwendet, um ein „JSON“-Objekt anzugeben
  2. *`%%`: wird verwendet, um einen Prozentsatz anzugeben sign
  3. * Wenn die Anzahl der in der Formatzeichenfolge verwendeten Parameter größer ist als die der anderen in der Formatmethode verwendeten Parameter mit Ausnahme des Parameters „format“, wird das Formatzeichen Mehr als ein Parameter in Die Zeichenfolge wird nicht ersetzt.`console.log(util.format('%s:%s','one'));`
  4. *Wenn das Format Wenn die Zahl Anzahl der in der Zeichenfolge verwendeten Parameter ist kleiner als die in der Methode „Format“ verwendeten Parameter mit Ausnahme des Parameters „Format“. Er wird entsprechend dem Typ des Parameterwerts in der Methode „Format“ automatisch in eine Zeichenfolge konvertiert. Verwenden Sie a Leerzeichen in der Mitte zum Trennen.
  5. +inspect(object,[options]) gibt eine Zeichenfolge zurück, die die Informationen des Objekts enthält, was beim Debuggen der Anwendung sehr nützlich ist.
  6. *`showHidden78180fd7e2f5f09e138c95a71ada14e6`Bei „true“ werden auch die nicht aufzählbaren Symbole und Eigenschaften von „object“ in das formatierte Ergebnis einbezogen. Der Standardwert ist „false“. `

    *`Tiefe44504a8867fd8c4c2392eb71967c76b6`Gibt die Anzahl der Rekursionen beim Formatieren von „Objekt“ an. Die Standardeinstellung ist „2“. unendlich, übergeben Sie „null“.
  1. *`colors78180fd7e2f5f09e138c95a71ada14e6`Wenn „true“, verwendet der Ausgabestil den „ANSI“-Farbcode. Standard ist „false“. kann angepasst werden.
  2. *`customInspect78180fd7e2f5f09e138c95a71ada14e6`Wenn es „false“ ist, dann wird die angepasste Funktion „inspect( Depth,opts) on `object“ nicht verwendet Der Standardwert ist „true“.
  3. *`showProxy78180fd7e2f5f09e138c95a71ada14e6`Wenn „true“, zeigen die Objekte und Funktionen des „Proxy“-Objekts das „Ziel“ und an „Handler“-Objekte. Der Standardwert ist „false“.
  4. *`maxArrayLengthd80b5def5ed1be6e26d91c2709f14170` gibt die maximale Anzahl von Elementen an, die Arrays und „TypedArray“ beim Formatieren enthalten können ist `100`. Auf `0*` oder eine negative Zahl gesetzt, um keine Array-Elemente anzuzeigen. „Die Schlüssel eines Objekts werden in mehrere Zeilenlängen aufgeteilt. Auf „Unendlich“ eingestellt, um ein Objekt als einzelne Zeile zu formatieren.
  5. +benutzerdefiniertes Dienstprogramm. Farbe prüfen
  6. Die Farbausgabe von util.inspect kann global über die Eigenschaften util.inspect.styles und util.inspect.colors angepasst werden (falls aktiviert)

    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] } } }
     * **/
  7. Das Obige habe ich zusammengestellt Für alle hoffe ich, dass es in Zukunft für alle hilfreich sein wird.
  8. Verwandte Artikel:

Verwendung des Vue-Karussell-Plug-ins vue-concise-slider

Instanzen der Ausführung von Funktionen nach Verlassen des Vue Seite

Lösen Sie das Problem der Vue-Seitenaktualisierung oder des Verlusts von Back-Parametern

Das obige ist der detaillierte Inhalt vonSo verwenden Sie das Readline-Modul und das Util-Modul in Node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn