Maison > interface Web > js tutoriel > le corps du texte

Comment utiliser le module readline et le module util dans Node.js

亚连
Libérer: 2018-06-02 11:49:39
original
1421 Les gens l'ont consulté

Cet article présente principalement l'utilisation du module readline et du module util de Node.js. Maintenant, je le partage avec vous et le donne comme référence.

1. Utilisez le module readline pour lire les données du flux ligne par ligne

1.1 Créez un objet Interface

Dans le module readline, via le module readline. utilisation de l'objet Interface Pour réaliser le traitement des données du flux de lecture ligne par ligne. Par conséquent, vous devez d'abord créer un objet Interface. Dans le module readline, vous pouvez créer un objet Interface via la méthode createInterface.createInterface(options options) est un objet avec les attributs suivants :

  1. input : attribut La valeur est un objet qui peut être utilisé pour lire les données du flux, utilisé pour spécifier la source des données lues.

  2. sortie : la valeur de l'attribut est un objet qui peut être utilisé pour écrire des données de flux et est utilisé pour spécifier la destination de sortie des données.

  3. ordinateur : la valeur de l'attribut est une fonction utilisée pour spécifier le traitement de complétion des onglets. La valeur du paramètre de la fonction est automatiquement définie sur les données avant le caractère de tabulation lu à partir de la ligne. La fonction doit renvoyer un tableau composé de toutes les chaînes correspondantes utilisées pour la complétion de tabulation et les données lues à partir de la ligne. .

  4. terminal : Cet attribut est un attribut de type booléen lorsqu'il est nécessaire de sortir le flux de données d'entrée en temps réel comme un terminal, et que le contrôle ANSI/VT100 doit être écrit dans le. données de sortie Lorsqu'il s'agit d'une chaîne, la valeur de l'attribut doit être définie sur true. La valeur de l'attribut par défaut est égale à la valeur de l'attribut isTTY de l'objet de valeur de l'attribut de sortie.

// 输入 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]
}
Copier après la connexion
1.2. Utilisez l'objet Interface pour lire le fichier ligne par ligne

Le contenu du fichier fs.js d'origine

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');
Copier après la connexion
Contenu du code

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() + ': */');
  }
});
Copier après la connexion
Le contenu du fichier anotherFs.js généré

/*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: */
Copier après la connexion
2 Utilisez certaines méthodes fournies dans le module util

+méthode format.

Semblable à la méthode printf en langage C, la première valeur du paramètre est utilisée comme chaîne de format, les autres valeurs de paramètre sont utilisées comme paramètres utilisés dans la chaîne de format et une chaîne formatée est renvoyée. .util.format('Vous avez entré %d paramètres, les valeurs des paramètres sont %s, %s, %s',3,'nice','excelent','holy');

Format string , vous pouvez utiliser les symboles de spécification des paramètres

  1. *`%s` : utilisé pour spécifier les paramètres de chaîne

  2. *`%d` : utilisé pour spécifier des paramètres numériques, y compris des entiers et des nombres à virgule flottante

  3. *`%j` : utilisé pour spécifier un objet `JSON`

  4. * ` %%` : utilisé pour spécifier un signe de pourcentage

  5. * Si le nombre de paramètres utilisés dans la chaîne de format est supérieur au nombre de paramètres utilisés dans la méthode de format sauf le `format` paramètre les autres paramètres de la chaîne de format ne seront pas remplacés.`console.log(util.format('%s:%s','one'));`

  6. * Si le nombre de paramètres utilisés dans la chaîne de format est inférieur aux autres paramètres utilisés dans la méthode `format` à l'exception du paramètre `format`, alors le type de valeur du paramètre dans la méthode `format` est supérieur à Convertissez-le automatiquement en chaîne, séparée par un espace.

+inspect(object,[options]) renvoie une chaîne qui contient les informations sur l'objet, très utile dans le processus de débogage des applications

<. 🎜>

    *`showHidden`S'il est `true`, les symboles et propriétés non énumérables de `object` seront également inclus dans le résultat formaté. La valeur par défaut est `false.`<. 🎜>
  1. *`profondeur` spécifie le nombre de récursions lors du formatage de `objet` Ceci est utile pour visualiser de grands objets complexes. La valeur par défaut est `2`. , transmettez `null`.
  2. *`colors`Si `true`, le style est affiché. Utilisez le code couleur `ANSI`. La valeur par défaut est `false`. la couleur peut être personnalisée.
  3. *`customInspect`Si `false`, elle est personnalisée sur `object` La fonction `inspect(profondeur, opts)` ne sera pas appelée. . La valeur par défaut est `true`.
  4. *`showProxy`Si `true`, alors les objets et fonctions d'objet `Proxy` afficheront leur `cible` et leur `gestionnaire`. objets. La valeur par défaut est « false ». Le nombre maximum d'éléments TypedArray pouvant être inclus. La valeur par défaut est « 100 ». Définissez sur « null » pour afficher tous les éléments du tableau. ne pas afficher les éléments du tableau.
  5. *`breakLength`Les clés d'un objet sont divisées en plusieurs lignes de longueur. Définissez sur `Infinity` pour formater un objet comme une seule ligne. . La valeur par défaut est `60`.
  6. + Couleurs util.inspect personnalisées
  7. La sortie couleur de util.inspect (si activée) peut être personnalisée globalement via l'util. Propriétés .inspect.styles et util.inspect.colors

  8. J'ai compilé ce qui précède pour vous, j'espère que cela vous sera utile à l'avenir.

Articles associés :

Utilisation du plug-in vue carrousel vue-concise-slider
const util = require(&#39;util&#39;);
console.log(util.format(&#39;您输入了%d个参数,参数值分别为%s,%s,%s&#39;, 3, &#39;nice&#39;, &#39;excelent&#39;, &#39;holy&#39;));
//您输入了3个参数,参数值分别为nice,excelent,holy
console.log(util.format(&#39;一个JSON对象%j&#39;, {&#39;name&#39;: &#39;jack&#39;, &#39;age&#39;: 25}));
// 一个JSON对象{"name":"jack","age":25}
console.log(util.format(&#39;一个百分号%&#39;));// 一个百分号%
console.log(util.format(&#39;%s:%s&#39;, &#39;one&#39;));// one:%s
console.log(util.format(&#39;%s&#39;, &#39;one&#39;, &#39;two&#39;, &#39;three&#39;, {&#39;name&#39;: &#39;jack&#39;}));

function test(one, two) {
  return one + two;
}

let parent = new Object();
parent.name = &#39;parent&#39;;
parent.func = test;

let child1 = new Object();
child1.name = &#39;child1&#39;;
parent.child1 = child1;

let child2 = new Object();
child2.name = &#39;child2&#39;;
child1.child = child2;

let child3 = new Object();
child3.name = &#39;child3&#39;;
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: &#39;parent&#39;,
 *  func: [Function: test],
 *  child1:
 *  { name: &#39;child1&#39;,
 *   child: { name: &#39;child2&#39;, child: [Object], inspect: [Function] } } }
 * **/
Copier après la connexion

Instances d'exécution de fonctions après avoir quitté la vue page

Résoudre le problème de rafraîchissement de la page vue ou de perte des paramètres arrière

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!