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