はじめに
Node はブラウザ内で実行できるもので,スタンドアロンプロセスとして動作する.
素の JavaScript だと機能が乏しいが,Node を使えば Python や Java と同等のことができるようになる.
例えば,ファイルシステムを操作したり,Web サーバーを作ったりすることができる.
JavaScript と Node は,同一のエンジン (V8 エンジン) 上で動く.
V8 エンジンは JavaScript のコードを機械語にコンパイルするため,Node の動作は早い.
効率的,かつ軽量に動作させるために,Node はイベント駆動モデル,ノンブロッキング I/O モデルを採用している.
インストール
バージョンについて
投稿時点で最新のバージョンは 9.5.0.
8.9.4 LTS を利用してもいいが,今回は 9.5.0 ではじめることとする.
公式 が発表しているリリースサイクルは次のとおり.
バージョン管理
nvm
がデファクトな模様.
brew install nvm
mkdir ~/.nvm
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.zshrc
echo '. "/usr/local/opt/nvm/nvm.sh"' >> ~/.zshrc
最新版の Node をインストール.
nvm install node
# あるいは nvm install <version>
インストールした Node.js を利用する.
nvm use node
# あるいは nvm use <version>
確認.
$ node -v
v9.5.0
開発
Hello world!
ターミナルから.
$ node
> console.log('Hello world!');
Hello world!
undefined
Google Chrome の「Developer Tools」→「Console タブ」でも同じことができる.
ブラウザ JS と Node
ブラウザ上で JavaScript を使った開発を行う場合,window
というグローバルオブジェクトを利用することが多い.
同様の概念が Node にも存在し,これは global
という名前で参照できる.
> global
{ console: [Getter],
DTRACE_NET_SERVER_CONNECTION: [Function],
DTRACE_NET_STREAM_END: [Function],
DTRACE_HTTP_SERVER_REQUEST: [Function],
DTRACE_HTTP_SERVER_RESPONSE: [Function],
DTRACE_HTTP_CLIENT_REQUEST: [Function],
DTRACE_HTTP_CLIENT_RESPONSE: [Function],
global: [Circular],
process:
process {
title: 'node',
version: 'v9.5.0',
versions:
{ http_parser: '2.7.0',
node: '9.5.0',
v8: '6.2.414.46-node.18',
...
ブラウザ上で JavaScript を使った開発を行う場合,HTML 文書には document
という名前で参照できる.
これについても同様に,Node には process
という名前で参照できるグローバルオブジェクトが存在する.
> process
process {
title: 'node',
version: 'v9.5.0',
versions:
{ http_parser: '2.7.0',
node: '9.5.0',
v8: '6.2.414.46-node.18',
...
process.exit()
,あるいは ^C^C でコンソールを抜け出すことができる.