nodejs学習ノート---1

14652 ワード

1.初対面のNodeJs
        いつですか
        何ができますか
        NodeJS環境構築と運行
2.webstormの使用
        プロジェクトの作成
        webstormのNodeJs配置
        ノードJsコード提示
3.NodeとJSの異同
        基本文法
        オブジェクトを内蔵
        グローバルオブジェクト
        スコープ
4.モジュールの使用
        グローバルスコープ
                globalオブジェクト
        モジュール
                モジュールコンセプト
                モジュールスコープ
                モジュールオブジェクトmodule
5.モジュールロード機構
        モジュールのロード
                require()
        モジュールパス処理
        モジュールファイルの検索メカニズム
6.モジュール-moduleとexports
        モジュールの作成
        moduleオブジェクト
        module.exportオブジェクト
        exportオブジェクト
7.グローバルオブジェクト
        モジュールオブジェクト
                __filename
                __dirname
        グローバルオブジェクト
                set Timeout
                set Interval
                clearTimeout
                clear Interval
                Date
8.processオブジェクト
        概念
        属性と方法
                argv
                execPath
                エンv
                version
                versions
                pid
                title
                arch
                plotform
                cwd()
                chdir(directory)
                memoryUsage()
                exit(code)
                キルル(pid)
9.processオブジェクト-入出力ストリーム
        stdin、stdout:標準入出力ストリーム(IO)
        標準入力デバイス
        標準出力装置
        process.out.write()
                出力ストリーム
        process.in.reume()
                入力ストリームを復元
        process.in.on('data')
                入力ストリームデータイベントを受信する
10.Buffer-1
        概念
        Buffer類
        new Buffer()
                Bufferオブジェクトを作成
        Bufferオブジェクトデータの基本操作
                bf[index] : 下付き対応データを取得
                bf.length : buffer長さ
        文字列とバイトの違い
11 Buffer-2
        Bufferオブジェクトのいくつかの一般的な属性と方法
                write()
                toString()
                toJSON()
                slice()
                copy()
12 Buffer-3
        Buffer類のいくつかの一般的な属性と方法
                isEnccoding()
                isBuffer()
                byteLength()
                concat()
 
1、初心者NodeJs
javascriptは3つの部分から構成されています.
Ecmascript この言語のいくつかの基礎を定義しています.文法、データの種類、構造、またいくつかの一般的なオブジェクトがあります.
BOM Ecmascriptに基づいて拡張されたページ操作要素の方法
DOMはEcmascriptに基づいてブラウザを操作するいくつかの方法を拡張します.
NodeJSもEcmascriptに基づいて拡張されたいくつかの操作非ブラウザのいくつかの方法です.OS OS OS OS OS OS OS、fileファイルシステム、databaseデータベース、netネットワークなどです.
設置及び環境配置(windowsシステム)
2、エディタはwebstromを使っています.
直接右ボタンrunで見ることができます.
settingを使ってnodejsのヒントを設定します. 
3、nodeとjsの違い 
/* ecmascript  ,nodejs js      ,         ,    ,    
*  js       window
*  node       global
*     : node      window
*
* */
var a=100;
console.log(a); //100

var d=new Date();
console.log(d.getFullYear()); //2045
console.log(d.getMonth()+1); //10

var arr=[1,2,3];
arr.push(4);
console.log(arr); //[1,2,3,4]

function Person(name){
    this.name=name;
}
Person.prototype.run=function(){
    console.log(this.name+' running')
}

var p1=new Person('leo');
p1.run(); //leo running
4、モジュールの使用
nodeの中で1つのaを定義して、globalを使って訪問することができなくて、aが1つの局部の変数なためです.
var a=100;
console.log(global.a); //undefined
nodeにはこのような規定があります.
  • nodeでは、ファイルとモジュールは一つずつ対応しています.つまり、一つのファイルは一つのモジュール
  • です.
  • 各モジュールには自分の役割領域があります. 
  • 私たちはvarを使用して説明する変数の一つは、大域的なものではなく、現在のモジュールの作用領域に属する
  • である.
    var a=100;
    console.log(a); //100
    global.a=200;
    console.log(a); //100
    console.log(global.a);//200
    ここで定義されているaとglobal.aは2つの変数です.
    //__filename:              
    console.log(__filename); //d:\wamp\www
    odejs
    ode1.js
    以上は結論を出すことができます.各ファイルには自分のモジュールがあります.各モジュールにはこの属性があります.
    5、モジュールロードシステム
    node 2.jsを定義するファイル
    console.log("  node2.js");
    node 1.jsの中で引用したいなら、使えます.
    require('./node2.js')//  node2.js
    モジュールローディング機構の二つの問題
    1.ロードパス
    require('       ')
    パスは相対パスまたは絶対パスを書くことができます.
    2.ファイル検索の特徴:
  • まず、ロードされたモジュールのファイル名に従って検索する
  • .
  • が見つからなかったら、モジュールファイル名の後に、jsのサフィックスを付けて検索します.
  • まだ見つかっていない場合は、ファイル名の後に、jsonのサフィックスを付けて検索します.
  • まだない場合は、ファイル名の後に、nodeの拡張子を追加して、
  • を検索します.
  • まだないなら、エラーを出します.
  • ファイル名>.js>.json>.node>エラー
    6、モジュール-moduleとexports 
    一つのモジュールでvarによって定義された変数は、そのスコープが現在のモジュールです.外部は直接的にアクセスできません.もしモジュールの中で他のモジュールで定義された変数にアクセスしたいなら、
  • 変数をglobalオブジェクトの属性として使用しますが、これは推奨されていません.
  • モジュールオブジェクトmodule
  • を使用する.
    変数をglobalオブジェクトの属性とします.
    global.a=100;
    モジュールオブジェクトを使うmodule
    module:現在のモジュールに関する情報を保存します.
    console.log(module)
    を選択します.どのような属性がありますか?
    このmoduleオブジェクトでは、もう一つのサブオブジェクト、exportオブジェクトは、このオブジェクトを通じてモジュールの一部変数オブジェクトにアクセスすることができます.
    node 5.jsに書き込みます.
    var a=100;
    module.exports.a=a;
    node 4.jsに導入する
    var m5=require('./node5');//        ,           module.export
    console.log(m5);//{ a: 100 }
    モジュールのスコープ内では、module.exportsのほかに、モジュールオブジェクトを内蔵しています.exportsは、彼が実はmodule.exportsです.
    console.log(module.exports==exports)//true
    戻り値はtrueです
    と書いてもいいです.
    exports.a=a;
    入力結果は同じです
    定義されたいくつかの詳細は、できるだけそれらの引用関係を破壊しないようにします.
    module.exports=[1,2,3]//      ,      ,exports module.exports          
    exports=[1,2,3]//        
    7.グローバルオブジェクト
    中国語の文書と照らし合わせて勉強できます.
    同前filename   和 __dirnameはグローバルではなく、モジュールローカルです.
    つまり、次のように出力するということです.
    console.log(__dirname);
    console.log(__filename);
    globalを入れてはいけません.filename 
    この二つのecmascriptに規定されている基本的なデータのタイプを除いては、全体的には、配列array、日付dateです.
    var d=new Date(); var arr=[1,2,3]
    8、processプロセスの対象
    多くのパラメータが含まれています
    process.argv コマンドラインのパラメータを含む配列です.最初の要素は「node」で、2番目のパラメータはJavaScriptファイルの名前で、3番目のパラメータは任意のコマンドラインパラメータです.
    console.log(process.argv); //[ 'C:\\Program Files\
    odejs\
    ode.exe','d:\\wamp\\www\
    odejs\
    ode6.js' ]
    process.execPath 現在のプロセスの実行ファイルの絶対パスを開きます.
    process.envはユーザー環境情報に戻ります.
    process.versionはnodeバージョンの情報を返します.
    process.versionsはnodeとその依存パケットのバージョン情報を返します.
    process.pid 現在のプロセスのPID タスクマネージャの詳細情報pid
    process.title現在のプロセスの表示名 (Getter/setter) 取得/設定
    process.archは現在のCPUのアーキテクチャを返します.'arm'、'ia 32'または'x 64'
    process.plotformは現在のオペレーティングシステムプラットフォームに戻ります.
    process.cwd()は現在のプロセスのワークディレクトリを返します.
    process.chdir(directory)は現在のプロセスの作業ディレクトリを変更します.
    process.kill(pid)はプロセスにメッセージを送ります.
    exit(code)終了
    setInterval(function(){ var d=new Date(); console.log('      :'+ d.getFullYear()+' '+ (d.getMonth()+1)+' '+ d.getDay()+'  '+ d.getHours()+':'+ d.getMinutes()+':'+ d.getSeconds()) },1000) setTimeout(function(){ process.exit() },5000)
    process.memoryUsage() Nodeプロセスのメモリ使用状況を返します.単位はbyteです.
    文書を具体的に見る方法はまだたくさんあります.
    9、stdin、stdout標準入出力ストリーム(IO)
     ---- 標準入力デバイス
     ---- 標準出力装置
     ---- stdinとstdoutは入力データと出力データを操作する方法を提供しています.私達も通常IO操作と呼ばれています.
    stdin 標準入力ストリーム
    stdout 標準出力ストリーム
    process.stdout.write('hello');
    function Log(data){ process.stdout.write(data); } Log('  ')
                 ,          ,      
    //             ,          ,      
    process.stdin.resume(); //           
    process.stdin.on('data',function(chunk){ console.log('     '+chunk);//         
    });
    実例:加減乗数を計算する
    var a,b;
    process.stdout.write('   a  :');
    process.stdin.on('data',function(chunk){
        //    a     
        if(!a){
            a=Number(chunk);
            process.stdout.write('   b  :');
        }
        else{
            b=Number(chunk);
            process.stdout.write('   :'+(a+b));
        }
    });
     10.Buffer類
  • バイナリデータのより良い操作のためのクラス
  • 私たちはファイルやネットワークデータを操作する時、実際にはバイナリデータストリームを操作しています.nodeはより便利な操作を提供してくれました.このようなデータフローの種類はBufferで、全体のクラス
  • です.
  • の3つの構造方式 
  • new Bufferは長さ
  • を割り当てます.
  • new Buffer
  • new Buffer
  • //new Buffer(size) size [number]     Buffer  ,            
    var bf=new Buffer(5);//5             Buffer          ,       ,    
    console.log(bf);//<Buffer 00 00 00 00 80>
    bf[1]=20;
    console.log(bf);//<Buffer 00 14 00 00 80>           
    var bf=new Buffer([1,2,3,4]);
    console.log(bf);//<Buffer 01 02 03 04>
    bf[10]=10;//    
    console.log(bf);//<Buffer 01 02 03 04>        ,    
    var bf=new Buffer('miaov','utf-8');
    console.log(bf);//<Buffer 6d 69 61 6f 76>         
    var bf=new Buffer('miaov','utf-8');
    console.log(bf);//<Buffer 6d 69 61 6f 76>         
    //      bf.length                   
    for(var i=0;i<bf.length;i++){
           console.log(String.fromCharCode(bf[i]));
       /* m
        i
        a
        o
        v
        */
    
    }
    
    //          
    var str1='miaov';
    var bf1=new Buffer(str1);
    console.log(str1.length); //5
    console.log(bf1.length); //5
    
    var str2='  ';
    var bf2=new Buffer(str2);
    console.log(str2.length);//2
    console.log(bf2.length);//6
    buf.length  このブザーのbytes数を返します.
    buf[index] index位置を指定する8バイトを取得または設定します.
    buf.write(string[,offset][,length][,encoding]) パラメータoffsetオフセットと指定されたencoding符号化方式に基づいて、パラメータstringデータをbufferに書き込みます.