Skip to content

Instantly share code, notes, and snippets.

@novi
Created February 12, 2012 00:43

Revisions

  1. novi created this gist Feb 12, 2012.
    87 changes: 87 additions & 0 deletions gistfile1.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,87 @@
    ## Node.js 開発環境 基礎

    ### Node.jsのインストール

    OS X ならHomebrewまたはMacportsで。

    [~] $ brew install node
    [~] # port install node

    nodeコマンドでnodeのインタプリタを起動。

    [~] $ node

    ### パッケージマネージャー

    RubyにおけるGem+Bundlerのようなものです。これもBundlerと同じく、システムとローカル両方の閉じた環境にインストールできます。Gemfileに当たるのがpackage.jsonです。

    [~] $ mkdir hogeproj
    [~] $ cd hogeproj

    適当なプロジェクト用のフォルダを作成して、package.jsonを作成する。ここではexpressを指定。バージョンを気にしない場合は、`">= 0.0.1"`とする。指定する場合は`"3.2.1"`、以上なら`">= 1.2.3"`

    // ~/hogeproj/package.json
    {
    "name": "hoge-app"
    , "version": "0.0.1"
    , "private": true
    , "dependencies": {
    "express": ">= 0.0.1"
    }
    }
    パッケージをインストール。

    [~] $ npm install
    これで`~/hogeproj/node_modules/*`の閉じた環境にインストールされる。.gitignoreに追加するとよい。
    実行ファイルが含まれる場合は、パスが通っていないので、パスを通すか、通常パスを指定して実行する。

    Bundlerにあるような`bundle exec`という概念はExpressのフォルダ構造を見ると分かるが、モジュール自体パスベースの読み込みなので特に無い。

    また、パッケージを単独でシステムにインストールするには`-g`オプションを使う。

    [~] # npm install -g express

    ### Expressと実行環境

    RubyにはSinatraやPadrinoがありますが、Nodeにおいてそれに相当するのがExpressです。

    httpサーバーベースのWebアプリ、サーバーサイドを作る時に必要なサーバー・ルーティング・各種ヘルパー・エラー処理等必要最低限のものが用意されています。それ以外は自分で選んで追加してく格好になります。
    Middlewareの設計が良く、豊富に作られているので、機能を追加したりする場合はまずMiddlewareの選択・開発を考えてみると良いでしょう。

    プロジェクトのディレクトリは自動的に作成されるので、そのままexpressコマンドでプロジェクトを新規作成する。

    [~] $ express hogeproj

    使えるオプションは`-h`オプションで確認する。

    アプリを走らせる。

    [~] $ cd hogeproj
    [~/hogeproj] $ node app.js

    ただし、これではソースコードを編集したときに立ち上がっているアプリには反映されない。毎回アプリを立ち上げ直す必要があるが、それを自動で行ってくれるnode-devをインストールする。

    [~] # npm install -g node-dev
    [~/hogeproj] $ node-dev app.js

    `node`コマンドの代わりに`node-dev`コマンドを使う。

    ### デバッガー

    c.f. [node.jsのデバッグ(ステップ実行)ができるnode-inspectorの使い方 - 大人になったら肺呼吸](http://d.hatena.ne.jp/replication/20111202/1322752174)

    今までブラウザで使っていたインスペクタと同じものがNode.jsのラインタイム上でも使えます。ただし、Nodeにはインスペクタを表示するためのインターフェースが無いので、通常のブラウザを使います。

    [~] # npm install -g node-inspector

    node-inspectorをインストールして、`$ node-inspector`で起動。これでデバッガは準備完了なので、続いてnodeのアプリを走らせる。(ちなみにここで8080はインスペクタのWebアプリのポート、5858はNodeが使うデバッグ用のポート)

    visit http://0.0.0.0:8080/debug?port=5858 to start debugging

    nodeからアプリを立ち上げるときには`--debug`オプションを付ける。

    [~/hogeproj] $ node --debug app.js

    `node-dev` を代わりに使う場合は、`$ node-dev --debug app.js`

    あとはブラウザから先ほど表示されたアドレス`http://0.0.0.0:8080/debug?port=5858`を入力する。もちろん通信が通ればどこからでもアクセス可能。