2
0

Node.js に入門したときの覚え書き

Posted at

はじめに

どうも。
普段は Express.js とか axios.js あたりを使ってチョメチョメしてるんですが、前提技術である Node.js について何も知らなかったので、改めて学んでみました。

内容的には以下の記事の嵩増しみたいなもんなので、改めて勉強される方はこちらの記事を推奨します。(とほほさん、いつも助かってます)

Node.js とは?

  • サーバーサイドの JavaScript 実行環境
  • npm ( Node Package Manager ) と呼ばれるパッケージ管理システムを同梱
  • MEAN ( MongoDB + Express + AngularJS + Node.js ) と呼ばれる構成で利用されることも多い

なぜ Node.js なのか

  • Google V8 JavaScript エンジン を採用しているため、高速
  • 負荷の大きい処理(暗号化など)を内部で複数スレッド処理できる
  • 様々なスケールに対応しうる
    • 小規模なプロダクトにも対応
    • 10k問題 ( クライアント1万台レベルになると性能が極端に悪化する問題 ) に対応

Node.js の歴史

  • 2009: カリフォルニア州の Ryan Dahl 氏が Node.js の開発に着手
  • 2011: 初期公開バージョン ( v0.1.14 ) をリリース

Node.js とブラウザ JavaScript の違い

  • Node.js には documentwindow などのオブジェクトは存在しない

    • サーバーサイドであるため、これらのDOMオブジェクトは使用できない
  • ブラウザにはファイルシステムへのアクセス機能などの API が使用できない

  • Node.js にはバージョンの制御ができる

    • 過去の JavaScript バージョンを含め、プロダクトに応じた環境設定ができる

Node.js を動かしてみる

Hello World ( コンソール版 )

  • node コマンドで js ファイルを選択することで実行ができる
node hoge.js
// hoge.js
console.log("Hello World!");

Hello World ( Web 版 )

  • Web サーバとして動作させたい場合は、以下のようにhttpライブラリを使う
    • 以下のコードを書いた後、ブラウザでlocalhost:8080にアクセスすると確認できる
// hoge.js
const PORT = 8080;

var http = require('http');
var server = http.createServer(function(req, res) {
  res.write("Hello world!\n");
  res.end();
}).listen(PORT);

image.png

  • または、別のコンソールを開いてcurlを使うことでも確認できる
curl localhost:8080

image.png

コンソールに出力する

  • console.log(): ログの出力関数。基本的にはこれを使う。
  • process.stdout.write(): ↑の改行なしバージョン。

クライアントからの情報を得る

  • Web のシステムは リクエスト(要求)レスポンス(応答) のセットで動いている
    • これらはそれぞれreqresと命名されることが多い
    • 上のコードでもhttp.createServer()の引数の関数で受け取っているのがわかる
// hoge.js
const PORT = 8080;

var http = require('http');
var server = http.createServer(function(req, res) {     // <- ここ
  res.write("Hello world!\n");
  res.end();
}).listen(PORT);
  • このreqにはさまざまなデータが詰まっている
    • URL: ユーザーがアクセスした場所
    • メソッド: ユーザーがサービスに対してやりたいこと(例:GET → データが欲しい)
    • Content-Type: データの種類を示すもの(例:text/html → HTMLデータ)
// hoge.js
const PORT = 8080;

var http = require('http');
var server = http.createServer(function(req, res) {
  console.log("URL: " + req.url);
  console.log("Method: " + req.method);
  console.log("Header[Content-Type]: " + req.headers['content-type']);
  res.end();
}).listen(PORT);

参考

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