最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js readline模塊與util模塊的使用

 更新時間:2018年03月01日 10:11:26   作者:Karuru  
本篇文章主要介紹了Node.js readline模塊與util模塊的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1. 使用readline模塊逐行讀取流數(shù)據(jù)

1.1. 創(chuàng)建Interface對象

在readline模塊中,通過Interface對象的使用來實現(xiàn)逐行讀取流數(shù)據(jù)的處理。因此首先要創(chuàng)建Interface對象,在readline模塊中,可以通過createInterface方法來創(chuàng)建Interface對象.readline.createInterface(options),options為一個對象,屬性如下

  1. input: 屬性值為一個可用來讀取流數(shù)據(jù)的對象,用于指定讀入數(shù)據(jù)的來源。
  2. output: 屬性值為一個可用來寫入流數(shù)據(jù)的對象,用于指定數(shù)據(jù)的輸出目標。
  3. computer: 屬性值為一個函數(shù),用于指定Tab補全處理。函數(shù)的參數(shù)值被自動設定為從該行中讀入的Tab字符之前的數(shù)據(jù),該函數(shù)應該返回一個由所有用于Tab補全時的匹配字符串組成的數(shù)組以及從該行中讀入的Tab字符之前的數(shù)據(jù)。
  4. terminal: 該屬性為一個布爾類型的屬性,當需要像一個終端那樣實時地將輸入數(shù)據(jù)流進行輸出,且需要在輸出數(shù)據(jù)中寫入ANSI/VT100控制字符串時,需要將該屬性值設置為true,默認屬性值等于output屬性值對象的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('行數(shù)據(jù)讀取操作被終止');
});

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對象逐行讀取文件

原fs.js文件的內(nèi)容

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');

代碼內(nèi)容

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文件的內(nèi)容

/*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方法,將第一個參數(shù)值作為一個格式化字符串,將其他參數(shù)值作為該格式化字符串中所使用的各中參數(shù),返回一個經(jīng)過格式化處理后的字符串.util.format('您輸入了%d個參數(shù),參數(shù)值分別為%s,%s,%s',3,'nice','excelent','holy');
格式化字符串中,可以使用的參數(shù)指定符號

  1. *`%s`:用于指定字符串參數(shù)
  2. *`%d`:用于指定數(shù)值參數(shù),包括整數(shù)及浮點數(shù)
  3. *`%j`:用于指定一個`JSON`對象
  4. *`%%`:用于指定一個百分號
  5. *如果格式化字符串中使用的參數(shù)個數(shù)多于format方法中使用的除了`format`參數(shù)之外的其他參數(shù),則格式化字符串中多于的參數(shù)將不被替換.`console.log(util.format('%s:%s','one'));`
  6. *如果格式化字符串中使用的參數(shù)個數(shù)少于`format`方法中使用的除了`format`參數(shù)之外的其他參數(shù),則根據(jù)`format`方法中多于參數(shù)值的類型自動將其轉換為字符串,中間使用一個空格進行分割.

+inspect(object,[options])返回一個字符串,該字符串包含了對象的信息,在調試應用程序的過程中非常有用.

  1. *`showHidden<boolean>`如果為`true`,則`object`的不可枚舉的符號與屬性也會被包括在格式化后的結果中.默認為`false.`
  2. *`depth<number>`指定格式化`object`時遞歸的次數(shù).這對查看大型復雜對象很有用.默認為`2`.若要無限地遞歸則傳入`null`.
  3. *`colors<boolean>`如果為`true`,則輸出樣式使用`ANSI`顏色代碼.默認為`false`.顏色可自定義.
  4. *`customInspect<boolean>`如果為`false`,則`object`上自定義的`inspect(depth,opts)`函數(shù)不會被調用.默認為`true`.
  5. *`showProxy<boolean>`如果為`true`,則`Proxy`對象的對象和函數(shù)會展示它們的`target`和`handler`對象.默認為`false`.
  6. *`maxArrayLength<number>`指定格式化時數(shù)組和`TypedArray`元素能包含的最大數(shù)量.默認為`100`.設為`null`則顯式全部數(shù)組元素.設為`0*`或負數(shù)則不顯式數(shù)組元素.
  7. *`breakLength<number>`一個對象的鍵被拆分成多行的長度.設為`Infinity`則格式化一個對象為單行.默認為`60`.

+自定義util.inspect顏色

可以通過util.inspect.styles和util.inspect.colors屬性全局地自定義util.inspect的顏色輸出(如果已啟用)

const util = require('util');
console.log(util.format('您輸入了%d個參數(shù),參數(shù)值分別為%s,%s,%s', 3, 'nice', 'excelent', 'holy'));
//您輸入了3個參數(shù),參數(shù)值分別為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] } } }
 * **/

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 利用n工具輕松管理Node.js的版本

    利用n工具輕松管理Node.js的版本

    我們在測試寫的Nodejs的程序在不同Nodejs版本下是否能正常運行,或是我們想要嘗試下最新版 Nodejs 的新特性,但常用的代碼需要舊版本的 Nodejs的時候就需要用 Node 版本管理工具,本文介紹的是利用n工具如何輕松管理Node.js的版本,需要的朋友可以參考下。
    2017-04-04
  • connect中間件session、cookie的使用方法分享

    connect中間件session、cookie的使用方法分享

    今天大象哥用了下connect的session和cookie,感覺還挺好用的,分享一下(里面坑挺多的,文檔寫的太模糊了,費了哥不少時間)。
    2014-06-06
  • node.js操作mysql(增刪改查)

    node.js操作mysql(增刪改查)

    本文給大家分享的是使用node.js實現(xiàn)對mysql數(shù)據(jù)庫的增刪改查操作,有需要的小伙伴可以參考下,希望對大家學習node有所幫助。
    2015-07-07
  • Node.js編程中客戶端Session的使用詳解

    Node.js編程中客戶端Session的使用詳解

    這篇文章主要介紹了Node.js編程中客戶端Session的使用詳解,是Node.js入門學習中的基礎知識,需要的朋友可以參考下
    2015-06-06
  • Node.js 基礎教程之全局對象

    Node.js 基礎教程之全局對象

    這篇文章主要介紹了Node.js 基礎教程之全局對象的相關資料,Node.js 中的全局對象是 global,所有全局變量(除了 global 本身以外)都是 global 對象的屬性,需要的朋友可以參考下
    2017-08-08
  • npm?工具庫?yenv使用簡介

    npm?工具庫?yenv使用簡介

    這篇文章主要為大家介紹了npm?工具庫?yenv使用簡介,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 一文詳解node.js有哪些全局對象呢

    一文詳解node.js有哪些全局對象呢

    這篇文章主要介紹了一文詳解node.js有哪些全局對象呢,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-09-09
  • node.js使用express-jwt報錯:expressJWT?is?not?a?function解決

    node.js使用express-jwt報錯:expressJWT?is?not?a?function解決

    這篇文章主要給大家介紹了關于node.js使用express-jwt報錯:expressJWT?is?not?a?function解決的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2023-03-03
  • node微信小程序登錄實現(xiàn)登錄的項目實踐

    node微信小程序登錄實現(xiàn)登錄的項目實踐

    登陸流程是指小程序用戶進行授權登陸,即獲取用戶的微信賬號等信息本文就來介紹一下node微信小程序登錄實現(xiàn)登錄,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • 詳解JWT與Token的應用與原理

    詳解JWT與Token的應用與原理

    這篇文章主要介紹了詳解JWT與Token的應用與原理,JWT全稱“JSON Web Token”,是實現(xiàn)Token的機制,需要的朋友可以參考下
    2023-04-04

最新評論

耒阳市| 蒲江县| 巨鹿县| 丽江市| 信阳市| 德兴市| 祁门县| 社旗县| 花莲市| 海南省| 彭州市| 当阳市| 岳阳市| 旌德县| 柳河县| 新兴县| 镇原县| 江津市| 邹城市| 休宁县| 故城县| 监利县| 曲靖市| 来凤县| 紫金县| 行唐县| 武鸣县| 水城县| 嘉禾县| 惠水县| 苍山县| 万全县| 永济市| 莱阳市| 随州市| 达日县| 阜城县| 开江县| 虞城县| 克什克腾旗| 鄂州市|