一度触ってみたかったので、node.jsを入れます。
公式ページ
http://nodejs.org/
日本語ページ
http://nodejs.jp/nodejs.org_ja/
日本ユーザズグループ
http://nodejs.jp/
node.jsとは何者か?ていうのが、正直よくわかってないので素直にインストーラからインストールしました。
インストールすると、アプリ画面にアイコンがいくつかできます。
必要なのはNode.js command promptです。スタート画面かタスクバーにピン止めしておきましょう。
Node.js command promptは、node.exe等の関連ファイルにPathが通ったコマンドプロンプトです。
Node.jsのプログラムはテキストエディタでJavaScriptで書きます。適当に作業フォルダ作って、そこにファイル作成しましょう。
とりあえずのHelloWorld。
var sys = require('sys'); var http = require('http'); var server = http.createServer( function (request,response){ response.writeHead(200, {'Content-Type' : 'text/plain'}); response.write('Hello,world!\n'); response.end(); } ).listen(80); sys.log('Server is running!');
これを「D:\nodejsWork\helloWorld.js」で保存します。
接続ポートは標準http(80)指定してますが、Apacheなど起動していた場合、80ポートはすでに使われているので、別ポートにしましょう。
「Node.js command prompt」を起動して、該当のフォルダへ移動してから、
「node helloWorld.js」で起動します。
ブラウザから繋いでみる。
繋がりました。停止するにはコマンドプロンプトで「Ctrl + C」です。
せっかくなのでMySQLに繋げてみたいと思います。
node-mysqlをインストール。node.jsのライブラリはnpmコマンドでインストールします。
「Node.js command prompt」で「npm install mysql」です。
カレントフォルダの下の「node_modules」にインストールされるみたいです。今回の場合は「D:\nodejsWork\node_modules」ですね。
プロジェクトごとに、必要なモジュールを入れる感じなのかな?よく使うものはnode.js共通モジュールとしてどこかに置いておけそうな気もしますが、どうなんでしょ。
DB接続とデータ取得をプログラムに追加。
var sys = require('sys'); var http = require('http'); var mysql = require('mysql'); var server = http.createServer( function (request,response){ //データベースへ接続 var connection = mysql.createConnection({ host: 'localhost', database: 'personal', user: 'root', password: 'password' }); response.writeHead(200, {'Content-Type' : 'text/html'}); response.write('<html>'); response.write('<head><title>Hello,Pokemon!</title></head>'); response.write('<body>'); var query = connection.query('SELECT name,voice FROM pokemon ORDER BY name'); query //エラーの場合ここが呼び出される。 .on('error', function(err) { console.log('Error!: ', err ); response.write('Error!\n'); }) //ここが1レコードずつ呼び出される。 .on('result', function(row) { response.write('<p>'); response.write('「こんにちは、' + row.name + '!」'); response.write('「' + row.voice + '!」'); response.write('</p>'); console.log('write Record Data'); }) //全部読み終わったらここが呼び出される。 .on('end', function() { response.write('</body>'); response.write('</html>'); console.log('response End'); response.end(); connection.end(); }); } ).listen(80); sys.log('Server is running!');
先日のMySQLを起動して、接続。
うまく出ました。ちなみに ‘error’ が発生した場合も ‘end’ は呼ばれてました。
これだと毎回DB接続切断してるのが嫌なのでコネクションプール使いたいんだけど、使えるのかな?mysql.createPoolてのがあるようなので、また見てみます。
EJSテンプレートエンジンやExpressフレームワークも試してみたいですね。
今日はここまで!