LoginSignup
1
0

More than 5 years have passed since last update.

(WIP) 必要に迫られてはじめる Node.js

Posted at

はじめに

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 ではじめることとする.
公式 が発表しているリリースサイクルは次のとおり.

image.png

バージョン管理

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 でコンソールを抜け出すことができる.

1
0
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
1
0