Node.js Visual StudioでNode.jsの開発 入門・初歩

提供:yonewiki
2022年11月2日 (水) 16:40時点におけるYo-net (トーク | 投稿記録)による版 (→‎GET POST)

概要

 Node.jsをVisual Studioで扱うことができます。

 前提

  • Visual Studioをインストール済。
  • Node.js Windowsをインストール済。


 Node.jsのインストール途中で必要なものを自動インストールするかという選択肢が表示されるので一緒にインストールします。Chocolateyもインストールされますと表示されますが、インストールしましょう。ChocolateyはNuGetというパッケージ管理をWindowsでも使うためのもので、NuGetはヌガーという風にも読めそうなところからChocolateyという名前が使われています。ちょっと容量が大きくなりますが、頑張って勉強するなら入れておいたほうが楽でしょう。


 Visual StudioでJavascriptのデバッグをするときはNode.jsのWebサーバ機能を使いますので、Node.jsの勉強をしたいわけではないときも、インストールすることになるでしょう。以下のような手順になります。

  • [ツール]-[ツールと機能を取得]
  • 表示されたウィンドウで、[ワークロード]-[Web&クラウド]からNode.js開発のチェックボックスをマークします。
  • バックグラウンドで起動しているVisual Studio本体側を閉じます。もともとのウィンドウに戻って、右下のボタンからインストールを開始します。


Hello World!

 まずは、新しい言語を覚える時の最初の一歩。Hello World!と表示される処理をやってみましょう。

 Node.jsのソリューションを新規作成します。HelloWorld_Stepという名前のソリューションを作ります。Server.jsのソースエディタで以下のように入力します。

'use strict';
var http = require('http');
var url = require('url');
var port = process.env.PORT || 1337;

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

 入力したら、ツールバーの[▶ウェブサーバ(Microsoft Edge)]をクリックします。わりかし時間がかかりますが、ブラウザが起動あるいは新しいページを開いて、http://localhost:1337というURIアドレスでHelloWorldが開いたと思います。


 これでHelloWorldは完成です。

Hello World! その2

 Hello Worldを違う場所に表示させます。ひたつ目は、ウェブサーバのコンソール画面に出力する方法です。res.writeの前後に以下の命令を追加します。res…の前後といいましたが、命令の記述順序はどっちでもいいという意味です。

  Console.log("Hello world!\n");
  res.write("Hello world!\n");
  res.end();


 Console.logでWebページへではなく、コンソールに表示できます。


Hello World! その3

 Hello Worldを違う方法で表示させます。Node.jsコンソール画面に出力する方法です。res.writeの前後に以下の命令を追加します。

  process.stdout.write("Hello world!\n");
  Console.log("Hello world!\n");
  res.write("Hello world!\n");
  res.end();


 標準出力というものです。コンソールに出力されます。


Hello World! その4

 Hello Worldを更に違う方法で表示させます。


  process.stdout.write("Hello world!\n");
  Console.log("Hello world!\n");
  res.write("Hello world!\n");
  res.send("Hello world!\n");
  res.end();


 res.sendでも出力できます。writeはWebページのContent部品として書き出しますが、sendは、特にどこへ記述するか意識しないので、Header部分にもContent部分にもなりえます。

 

GET POST

 httpプロトコルではGETメッセージという方式とPOSTメッセージという方式の2大メッセージがあります。GETメッセージではすべてアドレスに書かれた情報をもとにWEBServerが応答します。例えば以下のようなURLです

GET
http://localhost:1337/TEST?Key=Value&Key2=Value2

と上記のようなものがGETメッセージを処理するアドレスの例です。QueryStringと呼ばれるページに対するデータがアドレスに付け足されて表示される仕組みです。以下のように解釈されます。

Path : /TEST
QueryString : Key=Value&Key2=Value2
名前1 : Key
値1 : Value
名前2 : Key2
値2 : Value2

 POSTメッセージは、アドレスには表示されないQueryStringです。通常はhtmlのformタグのMethodの値にPOSTが指定されてformActionが実行されたときにQueryStringが発行されます。開発段階においては、formを使わずにPOSTメッセージを発行する方法が用意されています。ひとつの方法はCommandPromptでメッセージを送る方法です。


 以下のようなコマンドになります。Windows PowerShellでは異なる動作なので、CommandPromptをつかって下さい。

curl -X "POST" -d Key1=Value -d Key1=Value2 -d Key2=Value3 http://localhost:1337/TEST

 以下のように解釈されます。

Path : /TEST
QueryString : Key1=Value1&Key1=Value2&Key2=Value3
名前1 : Key1
値1 : { Value1, Value2 }
名前2 : Key2
値2 : Value3

 このような値を処理するには、

http.createServer(function(req, res) {
  if(req.method === 'GET') {
    res.writeHead(200, {'Content-Type' : 'text/html'});
    res.write("Get Hello World!");
    res.end();
  }
  if(req.method === 'POST') {
    res.writeHead(200, {'Content-Type' : 'text/html'});
    res.write("POST Hello World!");
    res.end();
  }
}