ExpressでHelloWorld!を表示しました。

NodeのExpressでHelloWorldを表示したいと考えました。環境はMacのVagrantでUbuntu14.04を使っています。

# 事前準備
環境ではnpmコマンドが使えるようになっています。[npmコマンド環境インストール手順](http://qiita.com/pugiemonn/items/445b5e518b9a05111316)

# 作業ディレクトリの作成
`/var/www`から作業をスタートしています。
まだ何もありません。

```bash:
ls -al

drwxrwxr-x 2 vagrant vagrant 4096 Nov  2 04:50 .
drwxr-xr-x 4 vagrant vagrant 4096 Nov  1 04:39 ..
```
何もありません。

作業ディレクトリを作ります。

```bash:
mkdir pugiemonn.com
cd pugiemonn.com
pwd
/var/www/pugiemonn.com
```
`pugiemonn.com`というディレクトリで作業します。

# npm initする
npm initを実行すると対話モードに入ります。

```bash:
npm init

This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sane defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (pugiemonn.com) 
version: (0.0.0) 
description: 
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: 
license: (BSD-2-Clause) 
About to write to /var/www/pugiemonn.com/package.json:

{
  "name": "pugiemonn.com",
  "version": "0.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "BSD-2-Clause"
}


Is this ok? (yes) yes
```
`npm init`した後に、全てにEnterで回答しました。package.jsonができています。

```bash:
ls -al

-rw-rw-r-- 1 vagrant vagrant  218 Nov  2 11:29 package.json
```


# expressをインストール

```bash:
npm install express
```
expressをインストールしたところ、`node_modules`ディレクトリができています。

```bash:
ls -al

drwxrwxr-x 3 vagrant vagrant 4096 Nov  2 11:42 node_modules
-rw-rw-r-- 1 vagrant vagrant  218 Nov  2 11:29 package.json
```
node_modulesディレクトリを見てみるとexpressがインストールされています。

```bash:
ls -al node_modules/

drwxrwxr-x 4 vagrant vagrant 4096 Nov  2 11:42 express
```
expressディレクトリが生成されています。

# HelloWorldを表示するJSファイルを作る

```js:hoge.js
var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Hello World!');
});

var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});
```

# nodejsコマンドでjsを実行


```bash:
nodejs hoge.js 
Example app listening at http://0.0.0.0:3000
```
ポート3000番でListenしているということです。

# HelloWorldを表示
http://192.168.33.20:3000/ にアクセスると `Hello World!` と表示されます。

![スクリーンショット 2015-11-04 10.42.37.png](https://qiita-image-store.s3.amazonaws.com/0/1624/53e60683-8646-7746-ab54-5635d86cca9f.png)


```rb:Vagrantfileに書いたipの設定
config.vm.network "private_network", ip: "192.168.33.20"
```

# コメントを貰いました
nodemonというのがいいらしい(☝ ՞ਊ ՞)

<blockquote class="twitter-tweet" lang="ja"><p lang="ja" dir="ltr"><a href="https://twitter.com/pugiemonn">@pugiemonn</a> <a href="https://twitter.com/Qiita">@Qiita</a> nodemon使うと便利ですよ</p>&mdash; のり@燻製男爵エンジニア (@sugi511) <a href="https://twitter.com/sugi511/status/661721618134118400">2015, 11月 4</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

# 参考
http://qiita.com/pugiemonn/items/445b5e518b9a05111316
http://expressjs.com/ja/starter/hello-world.html