Nodejs_基本操作

Node.js

概要

Node.jsはサーバー側でJavaScriptを動かす環境です。

JavaScriptはブラウザ上で動作するプログラムであり、コンピュータ上で単体プログラムとして実行することはできません。

そのJavaScriptをコンピュータ上で単体プログラムとして実行可能にするランタイム環境がNode.jsです。


文法

node.jsではJavaScriptの文法がそのまま使用できます。

さらに、node.jsではcommon.jsのモジュールに準拠したモジュール定義を行うことができ、それを別ファイルからrequireメソッドを使って呼び出すことができます。

JavaScriptではHTML上でscriptタグを定義して他ファイルを呼び出す方法しかなかったので、大きな改善といえます。


Node.jsのHello worldプログラム

HTTPサーバを起動して、Hello worldを表示するプログラムを作成します。

下記ソースコードを「app.js」として保存します。


var http = require('http');
var server = http.createServer();
server.on('request', doRequest);
server.listen(12000);
console.log('Server running!');

// リクエストの処理
function doRequest(req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.write('Hello World\n');
  res.end();
}

Node.jsを起動するには「node」コマンドを実行します。


node app.js

これでブラウザからhttp://localhost:12000へアクセスするとHello worldが表示されます。


HTMLファイルの読み込み

fsオブジェクト

ファイルの読み込みは「 fs 」というオブジェクトとして用意されています。


var fs = require('fs');

読み込み処理はreadFile()関数を用います。readFile()は非同期実行される関数であり、戻り値を返しません。コールバック関数でエラー処理を行う必要があります。


fs.readFile ( ファイルのパス , エンコード , コールバック関数 );

下記のように


function doRequest(req, res) {
  fs.readFile('./hello.html', 'UTF-8', function(err, data) {
    if (err) {
        console.error(err);
        process.exit(1);
    }
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(data);
    res.end();
  });
}

コマンドライン引数

Node.jsでは、process.argv[int]でコマンドライン引数を受け取ります。

コマンドライン引数はargv[2]からとなりますので注意が必要です。


for(var i = 0;i < process.argv.length; i++){
  console.log("argv[" + i + "] = " + process.argv[i]);
}

モジュール

node.jsではcommon.jsのモジュールに準拠したモジュール定義を行うことができ、それを別ファイルからrequireメソッドを使って呼び出すことができます。


// モジュール定義側(calcModule.js)
module.exports = {
    add: function (v1, v2) {
        return v1 + v2;
    },
    minus: function (v1, v2) {
        return v1 - v2;
    }
};

利用する側はrequireメソッドを使います。


// モジュールを利用する側(index.js)
var calc = require('./calcModule');

var result1 = calc.add(1, 2);
console.log(result1); // => 3

var result2 = calc.minus(1, 2);
console.log(result2); // => -1


関連ページ