Node.js学習ノート(三)

3709 ワード

global
JSのブラウザにおけるグローバルオブジェクトはwindowオブジェクトである.Node.js環境において、グローバルオブジェクトはglobalと呼ばれる.それを使って現在のJavaScriptの実行環境を区別できます.
if(typeof(window)==='undefined'){
  console.log('node.js');
}else{
  console.log('browser');
}
processprocessはNode.jsが提供するオブジェクトであり、現在のNode.jsのプロセスを表しています.
JavaScriptプログラムはイベント駆動によって実行されるシングルスレッドモデルであり、Node.jsも例外ではない.Node.jsは、応答イベントのJavaScript関数を継続的に実行し、応答イベントの関数が実行されるまで、Nodeは終了しました.
nextTick方法
この方法は次のイベント応答でコードを実行できます.
fsモジュール
fsモジュールはNode.jsの内蔵モジュールで、ファイルの読み書きを担当しています.非同期法と同期法を同時に提供した.
非同期
非同期は、JSがIO操作を実行する場合、実行結果を待つ必要はなく、コールバック関数に着信した後、以下のコードを継続して実行し、jQueryのgetJSON()を例にします.
$.getJSON('http://example.com/ajax',function(data){
  console.log('IO       ……');
});
console.log('   IO          ‘);
同期は線型であり、IO動作の戻りを待って、後続コードを実行する必要がある:var data=getJSONSync('http://example.com/ajax');同期コードはより少ないが、非同期は実際のユーザー体験においてより良い.
非同期ファイル
テキストファイルを非同期的に読み出す例は以下の通りです.
‘use strict';

var fs=require('fs');

fs.readFile('sample.txt','utf-8',function(err,data){
    if(err){
        console.log(err);
    }else{
        console.log(data)
    }
})
なお、sample.txtは、現在のディレクトリの下にある必要があり、ファイルの符号化フォーマットはutf-8である.
もし私たちが読み込むのがバイナリファイルなら?次に、画像を読み取る例を示します.
'use strict';

var fs = require('fs');

fs.readFile('sample.png', function (err, data) {
    if (err) {
        console.log(err);
    } else {
        console.log(data);
        console.log(data.length + ' bytes');
    }
});
バイナリファイルを読み込むと、出力f-8などのファイルコードが入ってこない場合、dataはBufferオブジェクトに戻ります.
ここでお話ししますBufferオブジェクトは、Nodeがバイナリデータを処理するインターフェースであり、Node元のグローバルオブジェクトでもあります.直接に使用できます.必要ではありません.require(‘buffer’).その役割は配列に似ている.
ファイルを同期します
同期してファイルを読むのは非同期の場合に比べて、readFilesyncを追加しただけで、以下の例を参照してください.
'use strict'

var fs=require('fs');
try{
  var data=fs.readFileSync('sample.txt','utf-8');
  console.log(data);
}
catch(err){
  //    
}
エラーが発生したら、try...catchを通じてしか捕獲できません.
ファイルを書くfs.writeFile()により実現される.
'use strict'

var fs=require('fs');

var data='Hello Node.js!';
fs.writeFile('output.txt',data,function(err){
  if(err){
    console.log(err);
  }else{
    console.log('ok');
  }
});
ファイルを読むのと同じで、writeFile()にも同期方法があります.
'use strict';
var fs=require('fs');

var data='hello Node.js';
fs.writeFileSync('output.txtx',data);
stat
ファイルサイズ、作成時間などの情報はwriteFileSync()で取得できます.これはstatオブジェクトに戻ります.ファイルの詳細を教えてください.
'use strict';

var fs=require('fs');
fs.stat('sample.txt',function(err,stat){
  if(err){
    console.log(err);
  }else{
    //      :
        console.log('isFile: ' + stat.isFile());
        //      :
        console.log('isDirectory: ' + stat.isDirectory());
        if (stat.isFile()) {
            //     :
            console.log('size: ' + stat.size);
            //     , Date  :
            console.log('birth time: ' + stat.birthtime);
            //     , Date  :
            console.log('modified time: ' + stat.mtime);
        }
    }
});
同様に、同期関数fs.stat()もある.
'use strict';

var fs=require('fs');
var stats=fs.statSync('sample.txt');

console.log(stats.isFile());     //true