web学習日記

プログラミングやweb関係を学んだことを呟くブログ

はじめてNode.jsについて学ぶ① 

f:id:nana205:20200506221026j:plain
node.js
最近web開発サービスでnode.jsで作られたサービスが増えたことに興味があったのと、
個人的にほかの言語を新しく覚える必要がないという 理由で学習コストが低く、かつそれなりに情報量があると思い、学んでみようかと思いました。今回はそのまとめです。

Node.jsとは

javascriptで動作するサーバー環境 webサーバーと言うと、ApatchやngnxなどのHTTPサーバー上でPHPなどを動作させる環境を思い浮かべる人が多いかもしれないが、
Node.jsはそれらとは違い、サーバーを作るところから実装がはじまる。

特徴

 ①javascriptでサーバーサイドの処理を実行する
 ②非同期II/O、ノンプロっキングI/Oモデルを採用している
 ③インベント駆動型
 ④シングルスレッド
 ⑤Googleの「V8」という優秀なjavascriptエンジンで動作する

※②ファイルの読み込みのような時間がかかる処理を非同期に実行ができる,処理を詰まらせずにできる

※③何かのきっかけで処理を行う仕組み

※④プログラムの処理が単一に行われること

※⑤chromeで使われているJavascriptエンジン

イベントループなサーバー

webサーバーの種類

apache :接続ごとにメモリを確保する為、同時リクエスト数に上限がある。
NGINX:イベントループで非同期の為同時リクエストに強い。

I/Oとは

アプリケーション外部との入出力処理を I/O といいます。
例えばファイルからデータを読み取る処理や、Socket からデータを読み込む処理を指す。 f:id:nana205:20200507153642p:plain

イベントル=プなサーバーのメリット

メモリ消費を抑えることができる
多くのユーザーの同時アクセス・大量リクエストを捌きやすい。
イベントループで処理を待たずに、イベントが呼ばれるまでループする

node.jsでwebサーバーを立ててみる

httpのcreateServerを使う。

var http = require(' http'); 
var server = http. createServer( function( req, res) 
{  res. writeHead( 200, {'Content-Type': 'text/ plain'}); 
res. write(' Hello World'); res. end(); }); 
server. listen( 1234); 
console. log(' サーバ を 起動 し まし た'); 

モジュール

コード再利用のための部品
● fs
●http/https
dns
●path など

EJSとは

Node.js用のテンプレートエンジン

使い方
タグ 説明
<%=キー名%> サーバ サイド で キー 名 に 指定 し た 値 を 書き出し ます。
値 に HTML タグ 等 が 含ま れ て い た 場合 は エスケープ さ れ る
<%-キー名%> サーバ サイド で キー 名 に 指定 し た 値 を 書き出し ます。
値 に HTML タグ 等 が 含ま れ て い た 場合 は エスケープ さ れ ない
<%処理%> 記述 さ れ た 処理 が レンダリング の 際 に 実行 さ れ ます。
なお、処理はサーバーサイドで実行される

使用例

<! DOCTYPE html > 
< html > 
< head > 
< meta charset =" utf-8">
 < title ><%= title %></title >
 </ head > 
< body > 
< ul >
 <% for (var i = 0; i < 3; i ++) { %> 
 < li ><%= i %></li > <% } %> 
</ ul > <%- contents 1 %> 
 <%= contents 2 %>
 < ol > 
<% arr. forEach( function( val) { %> 
< li ><%= val %>
</li >
<% }) %> 
</ ol > 
</ body >
 </ html >

Express を使う

●Node.js用のフレームワーク シェアが高い
●スケルトンプロジェクトのジェネレーターもある
●基本的な機能はほぼ揃っている

Expressでサイト作成

●グローバルにインストール

npm install express-generator -g

※「express-generator」という npmモジュールを使用すると、
アプリのひな型を自動生成することができます。 ビューのテンプレートエンジンも選択でき、
すぐに動作を確認することが可能

●expressアプリケーションの作成

express -e myapp  

(-eはejs、myappというプロジェクト)

●サーバー起動

cd myapp,npm install,npm start

まとめ

●node.jsはサーバーサイドで記述することができる
●大量アクセスにも耐え、高速処理を実現できる。
●I/Oとはアプリケーション外部との入出力処
●ライブラリやモジュールが豊富
●EJS などのテンプレートエンジンがある
●node.jsのフレームワークexpressを使えば簡単にwebアプリを構築することができる