Node.js(基礎知識二)

7703 ワード

Node.js(基礎知識二)
Node.jsルーティング
一般的に理解すると、ルーティングは、あなたのリクエストで指定された必要なデータや操作の応答パッケージでしょう.ルーティングに要求されたURLと他の必要なGETおよびPOSTパラメータを提供する必要があります.その後、ルーティングは、あなたが提供したデータに基づいて関連する操作を行うことができます.例えば、データベースの操作など、対応するデータを返すことができます.ルーティングを使用するにもurlとquerystringモジュールを導入し,この2つのモジュールをカプセル化する方法はurlと中で設計されたパラメータを解析するのに便利である.eg:
                     url.parse(urlString).query
                                           |
           url.parse(urlString).pathname      |
                       | |
                       | |
                     ------ -------------------
http://localhost:8888/start?foo=bar&hello=world
                                ---       -----
                                 | |
                                 | |
              querystring.parse(queryString)["foo"]    |
                                            |
                         querystring.parse(queryString)["hello"]

url.pase(urlString).queryが取得した文字列はquerystringに渡される.parse()メソッドでは,さらに具体的な付帯データを得ることができる.
サーバがリクエストを受信すると、コールバック関数onRequest(request,response)が呼び出されます.次はrouteとserverの統合の例です.eg:
//router.js

function route(pathname){
    //pathname        url          
    // ...       pathname                 response
}
exports.route = route;
//server.js
var http = require("http");
var url = require("url");

function start(route){
   function onRequest(request, response){
   var pathname = url.parse(request.url).pathname;

   route(pathname);

   response.writeHead(200, {"Content-Type":"text/plain"});
   response.write("Hello World");
   response.end();
   }

   http.createServer(onRequest).listen(8888);
}
//index.js,      2 
var server = require("./server");
var router = require("./router");

server.start(router.route);

Node.jsグローバルオブジェクト
JavaScriptには、グローバルオブジェクトと呼ばれる特殊なオブジェクトがあり、すべてのプロパティがプログラムの任意の場所、すなわちグローバル変数にアクセスできます.ブラウザJavaScriptでは、通常windowはグローバルオブジェクトであり、Node.jsのグローバルオブジェクトの場合globalは、すべてのグローバル変数がglobalオブジェクトの属性であり、すなわちglobalの最も根本的な役割はグローバル変数の宿主である.例えばsettimeout(cb,ms)、console,process,filenameなど.
Node.js常用ツール
それはNodeです.jsコアモジュールは、コアJavaScriptの機能を補うための一般的な関数の集合を提供します.
util.inherits
util.Inherits(constructor,superConstructor)は、実習オブジェクト間のプロトタイプ継承の関数です.JavaScriptのフェーズオブジェクト特性はプロトタイプに基づいており,プロトタイプコピーによって実現される.eg:
var util = require('util');
function Base(){
    this.name = 'base';
    this.base = 1991;
    this.sayHello = function(){
    console.log('Hello' + this.name);
    };
}
Base.prototype.showName = function(){
    console.log(this.name);
};
function Sub(){
    this.name = 'sub';
}
util.inherits(Sub,Base);
var objBase = new Base();
objBase.showName();
objBase.sayHello();
console.log(objBase);
var objSub = new Sub();
objSub.showName();
console.log(objSub);

印刷結果:
base
Hello base
{ name: 'base', base: 1991, sayHello: [Function]}
sub
{ name: 'sub' }

SubはBaseがプロトタイプで定義した関数のみを継承するが,Baseでプロトタイプ定義を用いた関数はオブジェクトの属性として出力されない.
util.inspect
オブジェクトを文字列に変換します.util.inspect(object,[showHidden],[depth],[color]),2番目のパラメータがtrueの場合は比較的詳細であり,depthのデフォルトは2層である.
Node.jsファイルシステム
Node.jsファイルシステムモジュールでは、非同期バージョンと同期バージョンがあり、一般的に非同期バージョンが使用されることが多い.非同期メソッドの最後のパラメータは必ずコールバック関数であり、コールバック関数の最初のパラメータにはエラー情報が含まれています.eg:
var fs = require("fs");

//     
fs.readFile('input.txt', function (err, data) {
   if (err) {
       return console.error(err);
   }
   console.log("    : " + data.toString());
});

//     
var data = fs.readFileSync('input.txt');
console.log("    : " + data.toString());

ファイルシステムの詳細については、ここを参照してください.