nodeで手軽にサーバーを立ててみる


今更感ありますがnode.jsとexpressでちょっぱやでサーバーを立ててみました。
日本語版のドキュメントもありますが古くなってるっぽいので原典に触れるのがオススメです。
Getting Started回しただけですすんませんすんません

1.インストール

package.jsonがあるディレクトリで

npm install express --save

2.Hello,World

おもむろにホームディレクトリ直下にapp.jsを作る

var express = require('express');
var app = express();

//localhost:1919/ にアクセスするとここに飛ぶ
app.get('/', function (req, res) {
  res.send('Hello World!');
});

//localhost:1919/hoge にアクセスするとここに飛ぶ
//app.post(path,func)とすれば、postでアクセスされた場合の処理を定義できる
app.get('/hoge', function (req, res) {
  res.send('foo');//文字列をレスポンスとして返す
});

//第一引数にてポート番号を指定
app.listen(1919, function () {
  console.log('114514');
});

このjavascriptをnodeで実行

node app.js

ブラウザでlocalhost:1919/もしくはlocalhost:1919/hoge にアクセスすると期待された結果が返ってくる。
これで、「決まったアドレスにアクセスすると何かのデータが返ってくる」原始的なサーバが完成した。はやい!

3.テンプレートエンジンを使ってみる

nodeデファクトのjadeは最近Pugに名前が変わったそうです

プロジェクトホーム直下にviews/ディレクトリを作り、index.pugを作成
(codehighlighterがjade未対応…orz)

app.set('view engine', 'pug');
app.get('/home', function (req, res) {
  res.render('index', {title: 'Hey', message: 'Hello there!'});
});

localhost:1919/home にアクセスすると、ページタイトルがHey,messageが”Hello,there!”のものが表示されていればOK
express標準では、ホームディレクトリ/views/以下をテンプレートエンジンの置き場所と定めているので、この規約に従う限り、「viewを配置するディレクトリはここだよ!」というのをコードに記述しなくても動いてくれる。

4.静的リソース(CSSとかjsとか)を読み込む

ホームディレクトリ直下にpublicディレクトリを作成

app.use(express.static('public'));

例えば、public/css/style.cssは
localhost:1919/css/style.css
にアクセスすれば読み込むことができるので、テンプレートエンジンindex.pugでは
link(rel=’stylesheet’ href=’/css/style.css’)
とすれば静的リソースであるstyle.cssを読み込むことができる。

5.node.jsサーバーを立てる時の標準構成をちょっぱやで作成する

express-generatorを使うとexpressプロジェクトの雛形を作成してくれます

npm install -g express-generator
express sampleapp #sampleappという名前でプロジェクトのテンプレを作成
cd sampleapp
npm install #依存モジュールを落とす
npm start #expressが起動する

6.データベースと通信する

Sequalize使う。
Sequalizeについては勉強中なのでまたGettingStarted回したら書きます。。。。

node.jsは元はビルドツールじゃなくてサーバー立てるためのツールだってことを思い出しました。