LoginSignup
10
10

More than 5 years have passed since last update.

Node.js学習メモ

Last updated at Posted at 2015-09-25

インフラレイヤーの仕事ばかりしていた数年間でだいぶ浦島太郎なのでリハビリのためにNode.jsを学習中。そのメモ。随時加筆。

インストール

公式サイトからインストーラーをダウンロードしてきてインストールしても良いが、複数バージョンの切り替えなどを考慮するとツール経由でインストールする方が良い。
ここでは、nodebrewを利用する。

既に他のツールでnode.jsがインストール済みの場合

例えばhomebrew経由でインストール済みの場合は予め以下のコマンドで削除する。

sudo brew uninstall --force node

nodebrew経由でのインストール

まず以下を実行する。

curl -L git.io/nodebrew | perl - setup

実行後以下のように出力されるはずなので、環境変数を追加する。自分の場合は、zshを利用しており、自分用の設定は.zshrc.mineに全て記載しているので、そこの末尾に追加した。

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
100 23558  100 23558    0     0   5736      0  0:00:04  0:00:04 --:--:--  5736
fetching nodebrew...
install nodebrew in $HOME/.nodebrew

========================================
Add path:

export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================

次にインストール可能なnode.jsのバージョンを調べるために、

nodebrew ls-remote

を実行する。大量のバージョンが表示されるはずだ。

次に最新のバイナリをインストールする。引数には上記のコマンドで表示されたバージョン文字列を指定すれば良い。

nodebrew install-binary v4.1.1
nodebrew install-binary io@v3.3.1

ここで無事にインストールされているかを確認するには、

nodebrew ls

コマンドを実行すれば良い。ただこの時点ではどのバージョンのnode.jsを利用するかは設定されていないので、最後に

nodebrew use v4.1.1

と実行して利用バージョンを指定する。

Hello Worldを試してみる

適当なファイル(hello.js)を作成し、以下のような内容にする。

var http = require('http');

http.createServer(function(request, response){
  response.writeHead(200, {'Content-type': 'text/html'});
  response.end("Hello World\n");
}).listen(8124);

console.log("Server is runnning at http://localhost:8124");

終わったらコマンドラインで以下のように実行すれば良い。

node hello.js

外部モジュールの管理

外部のモジュールを管理するためにはnpmを使うが、まずはそのためのpackage.jsonを作成する。

npm init

色々聞いてくるので適当に入力すればOK。

何かモジュールを追加する場合は、以下のようにする。引数に--saveを付けることで、そこにあるpackage.jsonもあわせて更新される。

npm install http --save

こうすることで当該ディレクトリのnode_modules以下にモジュールがインストールされる。
もちろん、package.jsonを手で編集してもOK。

学習

とりあえず以下の2つを真面目にやればだいたいどんなものか分かる。本を買うよりもこちらをやった方が良さそう。

  • Nodeビギナーズブック
  • learnyounode (node.js 基礎) 初心者向け
    • 全部で課題は13個。最初はHello Worldから始まって、引数の読み取り、ディレクトリのファイル一覧取得、その非同期版、モジュール作成、httpクライアント作成、TCP Server、HTTPのAPI作成で終わる。一通りやればだいたい分かった感じにはなる
LEARN YOU THE NODE.JS FOR MUCH WIN!
Select an exercise and hit Enter to begin
────────────────────────────
» HELLO WORLD                                [COMPLETED]
» BABY STEPS                                 [COMPLETED]
» MY FIRST I/O!                              [COMPLETED]
» MY FIRST ASYNC I/O!                        [COMPLETED]
» FILTERED LS                                [COMPLETED]
» MAKE IT MODULAR                            [COMPLETED]
» HTTP CLIENT                                [COMPLETED]
» HTTP COLLECT                               [COMPLETED]
» JUGGLING ASYNC                             [COMPLETED]
» TIME SERVER                                [COMPLETED]
» HTTP FILE SERVER                           [COMPLETED]
» HTTP UPPERCASERER                          [COMPLETED]
» HTTP JSON API SERVER                       [COMPLETED]
────────────────────────────
HELP
CHOOSE LANGUAGE
CREDITS
EXIT
  • その他にもWorkshoppersが多数公開されているので試してみると良い

Express

ExpressはNode.jsでWebアプリケーションを作るためのフレームワーク。最新のバージョンは4系(4.13.3)。出回っている情報は3系のものが多いが非互換な箇所もあるので注意が必要。
まず試すということであれば公式サイトにチュートリアルがあるのでそれに従う。

インストール

npm経由でインストールすればOK。

npm install express -g
npm install express-generator -g

Express Generatorによる自動生成

ソースコードをExpress Generatorで自動生成する。適当な作業ディレクトリを作成し

express .

を実行する。以下のように表示されファイルが作成される。

   create : .
   create : ./package.json
   create : ./app.js
   create : ./public
   create : ./public/images
   create : ./routes
   create : ./routes/index.js
   create : ./routes/users.js
   create : ./views
   create : ./views/index.jade
   create : ./views/layout.jade
   create : ./views/error.jade
   create : ./public/stylesheets
   create : ./public/stylesheets/style.css
   create : ./public/javascripts
   create : ./bin
   create : ./bin/www

   install dependencies:
     $ cd . && npm install

   run the app:
     $ DEBUG=express-study:* npm start

package.jsonも作成されるので、このディレクトリでnpm installを実行する。

これで準備が完了したのでアプリケーションを以下のようにして起動する。

DEBUG=express-study:* npm start

これで、http://localhost:3000にアクセスすれば画面が表示される。
CakePHPやRailsのようにコマンド一発でガシガシとやってくれる感じではないので、あとは自分で色々中身を作っていく。

気づいた点

  • デフォルトのテンプレートエンジンがJadeになっている。Jadeはhamlのような感じの独自記法でテンプレートを記述するが、自由度や共同編集の兼ね合いもあるので、ejsの方が良い気がする。その場合は、Express Generatorを実行する際に引数-e ejsを追加すればOK。

構文チェックや静的解析

各種言語で存在するようにNode.jsでもlint用のツールが使える。メジャーなのはjslintjshintだが、jslintはチェックが厳しすぎるきらいもあり、jshintを使うのが定番の様子。

  • vimのsyntasticプラグインとjshintを組み合わせることでvimでのファイル編集中にリアルタイムにlintを実行できる
  • platoを使うとレポートの出力も含めて良きに計らってくれる。Gruntと組み合わせれば処理を自動化できる

テスト自動化

色々なフレームワークが存在しているが、以下が定番。

  • Qunit
  • mocha
  • jasmine

標準のassertメソッドだけを使うのではなくAssertionライブラリと組み合わせるのが定番の模様

  • chai
  • power-assert-js
10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10