mof-brown

ずっとモフモフしてたい

はじめての Node.js (1)

今年は Node.js を勉強しようと思い書籍を探してみたところ、「はじめてのNode.js サーバーサイドJavaScriptでWebアプリを開発する-」という書籍が評判よさ気だったので購入。今週から読み始めてみる。

Node.js の特徴を理解する

  • シングルスレッドで全てのリクエストを処理していく

    • スレッド数増大の問題は無い
    • マルチスレッドプログラミングの問題を考慮しなくて良いのでシンプルなソースが書ける
  • 課題もある

    • CPUリソースを多く消費するような処理があると全体に影響する
    • コールバックを多用するのでソースの可読性が落ちる

Node.js の環境を構築する

インストールするだけなので割愛。

node.js

node コマンドと Node.js のイベントシステム

npm でモジュールを管理する

  • require 関数で呼び出されたモジュールは exports オブジェクトを持ち、require の戻り値して返される
  • exports オブジェクトを通してモジュール外から利用可能な関数等を定義することができる

[javascript] var hello = require('./hello'); hello.greeting(); [/javascript]

[javascript] exports.greeting = function() { console.log('hello!'); }; [/javascript]

  • 関数自体を返却したい場合は、module.exports を上書きする

[javascript] var hello = require('./hello'); hello(); [/javascript]

[javascript] module.exports = function() { console.log('hello!'); }; [/javascript]

  • require 関数で JSON ファイルを読み込む事もできる
  • require 関数にディレクトリパスを渡した場合、指定ディレクトリ配下の package.json を読み、main に指定されている JS ファイルを読み込む
  • モジュールの情報、依存関係等を package.json というファイルに記述し、モジュールリポジトリの直下に配置する

[javascript] { "name": "sample", "description": "sample", "author": { "name": "your name" }, "version": "0.0.1", "keywords": ["foo", "bar"], "homepage": "http://xxx", "main": "main.js", "engines": { "node": ">= 0.8.0" }, "repository": { "type": "git" "url": "http://github.com/xxx/xxx.git" }, "bugs": { "url": "http://github.com/xxx/issues" }, "licenses": [ { "type": "MIT", "url": "" } ], "scripts": { "test": "nodeunit xxx.js" }, "dependencies": [ "xxx": "0.0.1" ], "devDependencies": [ "xxx": "0.0.1" ] } [/javascript]