上手1025メモ

4485 ワード

端末とnodejsのioインタラクション(ioはinputとoutputで、入出力)
端末とioのインタラクションはnodejsオフィシャルモジュールを導入する必要があります.
ReadlineはNode.jsで標準入出力を実現するパッケージの良いモジュールです.このモジュールを通じて、データストリームを逐行で読み取ることができます.require(readline)を使用してモジュールを参照することができます.
Readlineのインスタンスを作成
readline.create Interfaceはreadlineのインターフェースインスタンスを作成します.Objectタイプのパラメータを受け入れて、以下のいくつかの値を伝えることができます.
  • input-傍受するための読み取り可能なストリーム(必須)
  • output-readlineに書き込むための書き込み可能なストリーム(必須).
  • completter-Tab自動補完のためのオプション関数です.(非常用)
  • terminal-inputとoutputストリームがTTYのように扱われることを望むなら、パラメータtrueを伝達し、ANSI/VT 100を介して符号化する.デフォルトでは、isTTYがoutputストリーム上で実行されているかどうかをチェックします.(非常用)
  • var readline = require(‘readline’);
    var rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
    });
    
    インターフェース
  • rl.close()は、インターフェース・インスタンス(Interface instance)をオフにし、入力出力ストリームの制御を放棄する.closeイベントがトリガされます.
  • rl.pause()は、readlineの入力ストリームを一時停止し、必要があれば後で回復することができます.
  • rl.prompt([preserveCursor])は、ユーザー入力のためにreadlineを用意し、既存のset Proptオプションを新たなラインに置いて、ユーザーに新しいところから入力を開始させる.preserveCurerをtrueに設定して、カーソル位置が0に再設定されることを防止します.
  • rl.question(query, callback)は、予め指定されたqueryを提示してから、ユーザが応答した後、指定されたcalbackをトリガする.指定されたqueryがユーザに表示されると、ユーザの応答が入力されると、指定されたcalback
  • がトリガされる.
  • rl.resume() readlineの入力ストリームを復元します.
  • rl.setPrompt(prompt)には、例えばコマンドラインでnodeを実行すると、表示されます.
  • 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事件の傍受と処理
  • イベント:'ライン'function (line) {}は、inputストリームが1つを受けたときにトリガされ、通常、ユーザが車をノックしたり、戻ったりするときに受信される.これはユーザーの入力を傍受する利器です.
  • rl.on('line', (cmd) => {
      console.log(`You just typed: ${cmd}`);
    });
    
  • イベント:'pause'function () {}は、いつでも入力ストリームが一時停止されるとトリガされる.入力ストリームが一時停止されていない場合も、SIGCONTが受信されるとトリガされる.
  • rl.on('pause', function() {
      console.log('Readline     .');
    });
    
  • イベント:「reume」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");