美文网首页
高明1025笔记

高明1025笔记

作者: 东海虬髯客 | 来源:发表于2016-11-01 14:08 被阅读0次

终端和nodejs的io交互(io是input和output,输入和输出)

终端和io交互需要引入一个nodejs官方模块:readline模块

Readline是Node.js里实现标准输入输出的封装好的模块,通过这个模块我们可以以逐行的方式读取数据流。使用require(“readline”)可以引用模块。

创建Readline实例

readline.createInterface(options)
创建一个readline的接口实例. 接受一个Object类型参数,可传递以下几个值:

  • input - 要监听的可读流 (必需)
  • output - 要写入 readline 的可写流 (必须).
  • completer - 用于 Tab 自动补全的可选函数。(不常用)
  • terminal - 如果希望 input 和 output 流像 TTY 一样对待,那么传递参数 true ,并且经由 ANSI/VT100 转码。 默认情况下检查 isTTY 是否在 output 流上实例化。(不常用)
var readline = require(‘readline’);
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
接口
  • rl.close()
    关闭接口实例 (Interface instance), 放弃控制输入输出流。”close” 事件会被触发
  • rl.pause()
    暂停 readline 的输入流 (input stream), 如果有需要稍后还可以恢复。
  • rl.prompt([preserveCursor])
    为用户输入准备好readline,将现有的setPrompt选项放到新的一行,让用户有一个新的地方开始输入。将preserveCursor设为true来防止光标位置被重新设定成0。
  • rl.question(query, callback)
    预先提示指定的query,然后用户应答后触发指定的callback。 显示指定的query给用户后,当用户的应答被输入后,就触发了指定的callback
  • rl.resume()
    恢复 readline 的输入流 (input stream).
  • rl.setPrompt(prompt)
    设置提示符,例如当你在命令行运行 node 时,你会看到(prompt)
  • rl.write(data[, key])

一个简单的readline案例
var readline = require('readline');
var rl = readline.createInterface(process.stdin,process.stdout);

// question方法
rl.question('what is you name? ',function(answer){
  console.log('my name is ' + answer);
  //不加close,则不会结束
  rl.close();
});
// close事件监听
rl.on('close',function(){
  console.log('欢迎下次再来');
  process.exit(0);
});

类似命令行的输入出
var readline = require('readline');
var rl = readline.createInterface(process.stdin,process.stdout);
rl.setPrompt('please>');
rl.prompt();
rl.on('line',(line)=>{
  switch(line.trim()){
    case 'pause':
      rl.pause();
      break;
    case 'copy':
      console.log('复制');
      break;
    case 'hello':
        rl.write("Write");
        console.log('world!');
        break;
    default:
      console.log('没有找到命令');
      break;
  }
  rl.prompt();
});

rl.on('close',function(){
  console.log('欢迎下次再来');
  process.exit(0);
});
rl.on('pause', function() {
  console.log('Readline 输入暂停.');
});

监听与处理Readline事件
  • 事件:’line’
    function (line) {}
    在 input 流接受了一个 \n 时触发,通常在用户敲击回车或者返回时接收。 这是一个监听用户输入的利器。
rl.on('line', (cmd) => {
  console.log(`You just typed: ${cmd}`);
});
  • 事件:’pause’
    function () {}
    不论何时,只要输入流被暂停就会触发。
    同样当输入流未被暂停,但收到 SIGCONT 也会触发。
rl.on('pause', function() {
  console.log('Readline 输入暂停.');
});
  • 事件: ‘resume’
    function () {}
    不论何时,只要输入流重新启用就会触发。
rl.on('resume', function() {
  console.log('Readline 恢复.');
});
  • 事件:’close’
    function () {}
    当 close() 被调用时触发。
    当 input流接收到”结束”事件时也会被触发. 一旦触发,应当认为Interface实例 “结束” . 例如, 当input流接收到^D时, 分别被认为EOT.
    当 input 流接收到一个 ^C 时,即使没有 SIGINT 监听器,也会触发这个事件,分别被称为 SIGINT 。
rl.on('close',function(){
  console.log('欢迎下次再来');
  process.exit(0);
});

浏览器和nodejs终端交互

var http = require("http");//引入http模块
var url = require("url");//引入url模块
var fs = require("fs");//引入fs模块
var ip = "192.168.238.129";//设置IP地址
var port =3000;//设置端口号
var server = new http.Server();//创建服务
server.listen(port,ip);//监听
server.on('request',(req,res) =>{//on方法
  var pathname =url.parse(req.url).pathname;//路径名
  switch (pathname) {
    case '/f':  //路径名=‘/f’
    fs.readFile('./jsq.html',(err,content) =>{
      res.writeHead(200,{"Content-type":"text/html;charset='utf-8'"});
      res.write(content);
      res.end();
    });
      break;
    default:

  }
});
querystring模块

负责读取传递的参数

var qs =require("querystring");

相关文章

  • 高明1025笔记

    终端和nodejs的io交互(io是input和output,输入和输出) 终端和io交互需要引入一个nodejs...

  • 随笔记 1025

    1.不要盲目执迷于一样东西; 2.君子不临危墙之下;所以不要把自己陷在不好的环境里; 3.无用的清醒也是一种清醒;...

  • docker+davmail+mailspring解决excha

    1:启动docker davmail docker run -d 1143:1143 -p 1025:1025...

  • 135 印象笔记

    1025 135 印象笔记 1.今天决定用印象笔记来记录和整理每天晚上简书上写的文字。这样就从一早上开始谋篇布局文...

  • 1025

    纪念1025

  • 高明1024学习笔记

    node.js的URL模块学习 URL统一资源定位符 URL中文文档:协议+域名/IP地址 该模块包含用以 URL...

  • 1025组网笔记

    1025组网 上周的作业ping不通,因为有的没有时钟 在HQ上查询,发现没有时钟频率 设置时钟频率 动态路由协议...

  • 1025

    甜食真好吃。 昨天朋友来,给娃带了不少吃的,基本上都是甜食。其中有一些分量比较大,整袋的零食她一下吃不完就不想吃了...

  • 1025

    相信爱,在忙碌的日子里。和你们在一起很开心!所有经历都是一种幸福❤️❤️❤️

  • 1025

    陪同省局人口处处长解长金一行三人上午平定张庄镇村,社区,下午矿区社区检查人口抽样摸底工作。

网友评论

      本文标题:高明1025笔记

      本文链接:https://www.haomeiwen.com/subject/apemuttx.html