SlideShare uma empresa Scribd logo
1 de 18
電算部ネットワーク講座
05
Node.js Ⅴ
目次


今回の内容



Web アプリケーションとは



Express.js



導入



使い方



チュートリアル



応用
今回の内容


今回は、 Node.js を用いて Web アプリケーションを作成します。



Express.js という Web Application Framework (FW) を使います。



Framework とは、開発時に決まった枠組みに従ってコーディングすることで、
開発効率を向上させるためのツールです。



似たようなものにライブラリがありますが、呼び出すか、呼び出されるか…と
いう点で異なります。



ライブラリは自分で書いたコードから呼び出されるものですが、フレームワー
クは自分で書いたコードを読み込んで実行するものです。
Express.js


Node.js で Web アプリケーション開発をする際によく用いられる FW です。



npm からインストールできます。



npm install express



今回は、このようにインストールして下さい (理由は後述)



npm install –g express
導入


npm install コマンドを実行する際に –g オプションを付加すると
インストールしたモジュールがコマンドを提供している場合に、コマンドプロ
ンプト (またはターミナル) から直接呼び出せるようになります。



※ g は global の略で、グローバルへインストールするという意味になりま
す。



express コマンドを使って、次の文を入力・実行して下さい。



express –sH



Web アプリケーションの雛形が作成されます!
使い方


さっそく、雛形を実行しましょう。



node app.js



このように表示されたら、正常に実行されています。



Express server listening on port 3000



ブラウザで http://localhost:3000/ を開いてみてください。
使い方


このように表示されたら成功です。
チュートリアル – View


テンプレート言語を用いて動的に生成される HTML の雛形 (テンプレート) を
記述します。



テンプレートはテンプレートエンジンによって、 HTML に変換されます。



今回は、 Twitter でも使われている Hogan.js というテンプレートエンジンを使
います。テンプレート言語は Mustache です。



{{title}}



このように {{, }} で囲まれた箇所が動的に置換されます。
チュートリアル - View


views/index.hjs を開いて、 {{title}} の箇所を増やしてみましょう。



変更が反映されない場合は、サーバを再起動します。
チュートリアル – Routing


Express.js は、柔軟なルーティングを提供します。



http://localhost:3000/



と



http://localhost:3000/users/



を開いた時に帰ってくる結果 (HTML) は異なります。



この URL へアクセスされた場合はこの処理をする…
に記述できます。

といったことがシンプル
チュートリアル – Routing


routes/index.js を開いて



res.render('index', { title: 'Express' });



この箇所を



res.render('index', { title: „My HomePage' });



このように変更してみましょう。
チュートリアル – Session


Web は基本的に Stateless (ステートレス) です。



状態を持たないため、複数のリクエストを全く関係のない別々のものとして扱
います。



しかし、会員専用サイトや、ネットショップ (EC サイト) などを作る上では、
Stateful (ステートフル) である必要があります。



状態の保持して、前回のリクエストと今回のリクエストが同じユーザからのも
のであることを判別しなければいけません。



そこで使われるのが Session です。
チュートリアル – Session


Session を実現するためによく使われる技術には Cookie があります。



※ここで言う Cookie とは、ブラウザが食べるものです。



Cookie は小さな文字列のデータをブラウザに保持させて、リクエストの度にリ
クエストヘッダ (Cookie) に含めてサーバへ送ります。



サーバ側では、 Cookie ヘッダを参照することで、どのユーザからのリクエス
トであるか判別します。



と、難しい話をしましたが、 Express.js を使うとこれらの内部の細かい処理を
知らなくても、状態を保持するステートフルな Web アプリケーションが書け
ます。
チュートリアル – Session


app.js を開いて



app.get('/users', user.list); の次の行 (35 行目付近) に



app.get("/users/:name", user.one);



これを追記します。



routes/user.js を開いて



res.send(“respond with a resource”); の前の行に

if (req.session.name) {
res.send("I know you! You are " + req.session.name + ".");
return;
}


これを追記します。
チュートリアル - Session
最後に、 routes/user.js の行末に



exports.one = function(req, res){
req.session.name = req.params.name;
res.send("Your name is " + req.params.name + ".");
};


これを追記して終わりです。



サーバを再起動して、



http://localhost:3000/users/



http://localhost:3000/users/test/



http://localhost:3000/users/



の順で開いて、挙動を確認してみて下さい。
応用


実際に Web アプリケーションで Session を扱う際は、 DB に Session 情報を入れる
などして、データの永続化 (アプリケーションが終了してもデータを保持し続ける
こと) を行う必要があります。



SQLite を使うと、別途 DB サーバを起動する必要が無いため簡単に導入できます。



導入



npm install connect-sqlite3 --save



--save オプションを付加することで、 package.json にモジュールの依存関係が保
存されます。



次回から npm install ですべてのモジュールをインストールできるようになります。
応用


app.js を開きます。



上部でモジュールを読み込んでいる部分 (require を呼び出している部分) に 1 行追
記します。



var SQLiteStore = require('connect-sqlite3')(express);



app.use(express.session());

この箇所を

app.use(express.session({
store: new SQLiteStore
}));


このように書き換えます。
応用


サーバを再起動しても名前を覚えていたら、成功です!



Express はシンプルですが強力な FW で、使いこなすと実用的な Web アプリ
ケーションを開発することができます。



今回のサンプルコードはこちらです。



https://github.com/ww24/densan.info-networkcourse/tree/master/nodejs/05

Mais conteúdo relacionado

Mais procurados

Visual studio online and Agile
Visual studio online and AgileVisual studio online and Agile
Visual studio online and AgileKazushi Kamegawa
 
OSS/linux on Azureの活用方法と勘所
OSS/linux on Azureの活用方法と勘所OSS/linux on Azureの活用方法と勘所
OSS/linux on Azureの活用方法と勘所Kuniteru Asami
 
ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験miso- soup3
 
Tuning maniax 2014 2nd stage linux編
Tuning maniax 2014 2nd stage linux編Tuning maniax 2014 2nd stage linux編
Tuning maniax 2014 2nd stage linux編ThinkIT_impress
 
[MR09] デスクトップ アプリをストアから配布するための A to Z
[MR09] デスクトップ アプリをストアから配布するための A to Z[MR09] デスクトップ アプリをストアから配布するための A to Z
[MR09] デスクトップ アプリをストアから配布するための A to Zde:code 2017
 
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~Akira Inoue
 
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。Daigou Harada
 
実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターンKuniteru Asami
 
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころ
Windows Server 2016 Essentials TP4の強化ポイントとPowerShellの使いどころWindows Server 2016 Essentials TP4の強化ポイントとPowerShellの使いどころ
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころSatoru Nasu
 
≪先進企業に学べ!≫ Yahoo! JAPAN × BROCADE Yahoo! JAPAN はなぜ、OpenStack を選んだのか?
≪先進企業に学べ!≫ Yahoo! JAPAN × BROCADE Yahoo! JAPAN はなぜ、OpenStack を選んだのか?≪先進企業に学べ!≫ Yahoo! JAPAN × BROCADE Yahoo! JAPAN はなぜ、OpenStack を選んだのか?
≪先進企業に学べ!≫ Yahoo! JAPAN × BROCADE Yahoo! JAPAN はなぜ、OpenStack を選んだのか?Brocade
 
Azure load testingを利用したパフォーマンステスト
Azure load testingを利用したパフォーマンステストAzure load testingを利用したパフォーマンステスト
Azure load testingを利用したパフォーマンステストKuniteru Asami
 
それでも僕はユニットテストを書きたい - Pester powered by PowerShell
それでも僕はユニットテストを書きたい - Pester powered by PowerShellそれでも僕はユニットテストを書きたい - Pester powered by PowerShell
それでも僕はユニットテストを書きたい - Pester powered by PowerShellHidari Ikw
 
Photon Server Deep Dive
Photon Server Deep DivePhoton Server Deep Dive
Photon Server Deep DiveKazumi Hirose
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説Akira Inoue
 
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法Study Group by SciencePark Corp.
 
Microsoft Love Java & OSS
Microsoft Love Java & OSSMicrosoft Love Java & OSS
Microsoft Love Java & OSSYoshio Terada
 

Mais procurados (20)

Visual studio online and Agile
Visual studio online and AgileVisual studio online and Agile
Visual studio online and Agile
 
OSS/linux on Azureの活用方法と勘所
OSS/linux on Azureの活用方法と勘所OSS/linux on Azureの活用方法と勘所
OSS/linux on Azureの活用方法と勘所
 
ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験
 
Tuning maniax 2014 2nd stage linux編
Tuning maniax 2014 2nd stage linux編Tuning maniax 2014 2nd stage linux編
Tuning maniax 2014 2nd stage linux編
 
[MR09] デスクトップ アプリをストアから配布するための A to Z
[MR09] デスクトップ アプリをストアから配布するための A to Z[MR09] デスクトップ アプリをストアから配布するための A to Z
[MR09] デスクトップ アプリをストアから配布するための A to Z
 
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
 
Vagrant on SoftLayer
Vagrant on SoftLayerVagrant on SoftLayer
Vagrant on SoftLayer
 
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
 
実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン
 
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころ
Windows Server 2016 Essentials TP4の強化ポイントとPowerShellの使いどころWindows Server 2016 Essentials TP4の強化ポイントとPowerShellの使いどころ
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころ
 
≪先進企業に学べ!≫ Yahoo! JAPAN × BROCADE Yahoo! JAPAN はなぜ、OpenStack を選んだのか?
≪先進企業に学べ!≫ Yahoo! JAPAN × BROCADE Yahoo! JAPAN はなぜ、OpenStack を選んだのか?≪先進企業に学べ!≫ Yahoo! JAPAN × BROCADE Yahoo! JAPAN はなぜ、OpenStack を選んだのか?
≪先進企業に学べ!≫ Yahoo! JAPAN × BROCADE Yahoo! JAPAN はなぜ、OpenStack を選んだのか?
 
20180123 power shell
20180123 power shell20180123 power shell
20180123 power shell
 
Azure load testingを利用したパフォーマンステスト
Azure load testingを利用したパフォーマンステストAzure load testingを利用したパフォーマンステスト
Azure load testingを利用したパフォーマンステスト
 
それでも僕はユニットテストを書きたい - Pester powered by PowerShell
それでも僕はユニットテストを書きたい - Pester powered by PowerShellそれでも僕はユニットテストを書きたい - Pester powered by PowerShell
それでも僕はユニットテストを書きたい - Pester powered by PowerShell
 
Photon Server Deep Dive
Photon Server Deep DivePhoton Server Deep Dive
Photon Server Deep Dive
 
Web matrix2とvisual studio
Web matrix2とvisual studioWeb matrix2とvisual studio
Web matrix2とvisual studio
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
 
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
 
Cloud foundry
Cloud foundryCloud foundry
Cloud foundry
 
Microsoft Love Java & OSS
Microsoft Love Java & OSSMicrosoft Love Java & OSS
Microsoft Love Java & OSS
 

Destaque (19)

2013 04-29 american art collaborative lod meeting - washington dc - web
2013 04-29 american art collaborative lod meeting - washington dc - web2013 04-29 american art collaborative lod meeting - washington dc - web
2013 04-29 american art collaborative lod meeting - washington dc - web
 
前期講座04
前期講座04前期講座04
前期講座04
 
OpenIL vol.1
OpenIL vol.1OpenIL vol.1
OpenIL vol.1
 
前期講座07
前期講座07前期講座07
前期講座07
 
前期講座03
前期講座03前期講座03
前期講座03
 
後期講座08
後期講座08後期講座08
後期講座08
 
後期講座03
後期講座03後期講座03
後期講座03
 
Illust bookmark
Illust bookmarkIllust bookmark
Illust bookmark
 
Git 初心者のための GitHub Pages
Git 初心者のための GitHub PagesGit 初心者のための GitHub Pages
Git 初心者のための GitHub Pages
 
後期講座07
後期講座07後期講座07
後期講座07
 
group presentation katrina cortez (final revision)
group presentation   katrina cortez (final revision)group presentation   katrina cortez (final revision)
group presentation katrina cortez (final revision)
 
前期講座06
前期講座06前期講座06
前期講座06
 
前期講座08
前期講座08前期講座08
前期講座08
 
後期02
後期02後期02
後期02
 
後期講座01
後期講座01後期講座01
後期講座01
 
後期05
後期05後期05
後期05
 
pixiv SUMMER BOOT CAMP 2013
pixiv SUMMER BOOT CAMP 2013pixiv SUMMER BOOT CAMP 2013
pixiv SUMMER BOOT CAMP 2013
 
後期03
後期03後期03
後期03
 
Docker で Deep Learning
Docker で Deep LearningDocker で Deep Learning
Docker で Deep Learning
 

Semelhante a 後期講座05

後期第二回ネットワークチーム講座資料
後期第二回ネットワークチーム講座資料後期第二回ネットワークチーム講座資料
後期第二回ネットワークチーム講座資料densan_teacher
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Akira Inoue
 
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップEWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップKiyoshi Sawada
 
12 総合演習Word Pressの利用
12 総合演習Word Pressの利用12 総合演習Word Pressの利用
12 総合演習Word Pressの利用文樹 高橋
 
120512 metro styleapp_javascript
120512 metro styleapp_javascript120512 metro styleapp_javascript
120512 metro styleapp_javascriptTakayoshi Tanaka
 
Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWSEiji Shinohara
 
Getting started with node.js
Getting started with node.jsGetting started with node.js
Getting started with node.jskouzouman
 
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成Kiyoshi Sawada
 
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップEWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップKiyoshi Sawada
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるdavid9142
 
Hokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsHokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsTadahiro Ishisaka
 
20191129 AWS CloudFormarion
20191129 AWS CloudFormarion20191129 AWS CloudFormarion
20191129 AWS CloudFormarionyamamotomsc
 

Semelhante a 後期講座05 (20)

後期第二回ネットワークチーム講座資料
後期第二回ネットワークチーム講座資料後期第二回ネットワークチーム講座資料
後期第二回ネットワークチーム講座資料
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
 
20050903
2005090320050903
20050903
 
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップEWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
 
12 総合演習Word Pressの利用
12 総合演習Word Pressの利用12 総合演習Word Pressの利用
12 総合演習Word Pressの利用
 
20060419
2006041920060419
20060419
 
Amazon Simple Workflow Service (SWF)
Amazon Simple Workflow Service (SWF)Amazon Simple Workflow Service (SWF)
Amazon Simple Workflow Service (SWF)
 
120512 metro styleapp_javascript
120512 metro styleapp_javascript120512 metro styleapp_javascript
120512 metro styleapp_javascript
 
Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWS
 
Getting started with node.js
Getting started with node.jsGetting started with node.js
Getting started with node.js
 
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
 
20021007
2002100720021007
20021007
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップEWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
 
Hokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsHokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.js
 
20191129 AWS CloudFormarion
20191129 AWS CloudFormarion20191129 AWS CloudFormarion
20191129 AWS CloudFormarion
 
JAWS-UG Meets Windows (JAWS Days 2017)
JAWS-UG Meets Windows (JAWS Days 2017)JAWS-UG Meets Windows (JAWS Days 2017)
JAWS-UG Meets Windows (JAWS Days 2017)
 
10回目nodejs
10回目nodejs10回目nodejs
10回目nodejs
 

Mais de Takenori Nakagawa (13)

TensorFlow 入門
TensorFlow 入門TensorFlow 入門
TensorFlow 入門
 
機械学習を用いたパターンロック認証の強化手法
機械学習を用いたパターンロック認証の強化手法機械学習を用いたパターンロック認証の強化手法
機械学習を用いたパターンロック認証の強化手法
 
GitHub Travis-CI Go!
GitHub Travis-CI  Go!GitHub Travis-CI  Go!
GitHub Travis-CI Go!
 
01.app
01.app01.app
01.app
 
Service Workers Push API Hands-on
Service Workers Push API Hands-onService Workers Push API Hands-on
Service Workers Push API Hands-on
 
Service Workers
Service WorkersService Workers
Service Workers
 
OpenGL 3DCG
OpenGL 3DCGOpenGL 3DCG
OpenGL 3DCG
 
WebGL
WebGLWebGL
WebGL
 
01:artificial life
01:artificial life01:artificial life
01:artificial life
 
densan2014-late01
densan2014-late01densan2014-late01
densan2014-late01
 
phpck
phpckphpck
phpck
 
前期講座09
前期講座09前期講座09
前期講座09
 
前期講座05
前期講座05前期講座05
前期講座05
 

後期講座05

  • 3. 今回の内容  今回は、 Node.js を用いて Web アプリケーションを作成します。  Express.js という Web Application Framework (FW) を使います。  Framework とは、開発時に決まった枠組みに従ってコーディングすることで、 開発効率を向上させるためのツールです。  似たようなものにライブラリがありますが、呼び出すか、呼び出されるか…と いう点で異なります。  ライブラリは自分で書いたコードから呼び出されるものですが、フレームワー クは自分で書いたコードを読み込んで実行するものです。
  • 4. Express.js  Node.js で Web アプリケーション開発をする際によく用いられる FW です。  npm からインストールできます。  npm install express  今回は、このようにインストールして下さい (理由は後述)  npm install –g express
  • 5. 導入  npm install コマンドを実行する際に –g オプションを付加すると インストールしたモジュールがコマンドを提供している場合に、コマンドプロ ンプト (またはターミナル) から直接呼び出せるようになります。  ※ g は global の略で、グローバルへインストールするという意味になりま す。  express コマンドを使って、次の文を入力・実行して下さい。  express –sH  Web アプリケーションの雛形が作成されます!
  • 8. チュートリアル – View  テンプレート言語を用いて動的に生成される HTML の雛形 (テンプレート) を 記述します。  テンプレートはテンプレートエンジンによって、 HTML に変換されます。  今回は、 Twitter でも使われている Hogan.js というテンプレートエンジンを使 います。テンプレート言語は Mustache です。  {{title}}  このように {{, }} で囲まれた箇所が動的に置換されます。
  • 9. チュートリアル - View  views/index.hjs を開いて、 {{title}} の箇所を増やしてみましょう。  変更が反映されない場合は、サーバを再起動します。
  • 10. チュートリアル – Routing  Express.js は、柔軟なルーティングを提供します。  http://localhost:3000/  と  http://localhost:3000/users/  を開いた時に帰ってくる結果 (HTML) は異なります。  この URL へアクセスされた場合はこの処理をする… に記述できます。 といったことがシンプル
  • 11. チュートリアル – Routing  routes/index.js を開いて  res.render('index', { title: 'Express' });  この箇所を  res.render('index', { title: „My HomePage' });  このように変更してみましょう。
  • 12. チュートリアル – Session  Web は基本的に Stateless (ステートレス) です。  状態を持たないため、複数のリクエストを全く関係のない別々のものとして扱 います。  しかし、会員専用サイトや、ネットショップ (EC サイト) などを作る上では、 Stateful (ステートフル) である必要があります。  状態の保持して、前回のリクエストと今回のリクエストが同じユーザからのも のであることを判別しなければいけません。  そこで使われるのが Session です。
  • 13. チュートリアル – Session  Session を実現するためによく使われる技術には Cookie があります。  ※ここで言う Cookie とは、ブラウザが食べるものです。  Cookie は小さな文字列のデータをブラウザに保持させて、リクエストの度にリ クエストヘッダ (Cookie) に含めてサーバへ送ります。  サーバ側では、 Cookie ヘッダを参照することで、どのユーザからのリクエス トであるか判別します。  と、難しい話をしましたが、 Express.js を使うとこれらの内部の細かい処理を 知らなくても、状態を保持するステートフルな Web アプリケーションが書け ます。
  • 14. チュートリアル – Session  app.js を開いて  app.get('/users', user.list); の次の行 (35 行目付近) に  app.get("/users/:name", user.one);  これを追記します。  routes/user.js を開いて  res.send(“respond with a resource”); の前の行に if (req.session.name) { res.send("I know you! You are " + req.session.name + "."); return; }  これを追記します。
  • 15. チュートリアル - Session 最後に、 routes/user.js の行末に  exports.one = function(req, res){ req.session.name = req.params.name; res.send("Your name is " + req.params.name + "."); };  これを追記して終わりです。  サーバを再起動して、  http://localhost:3000/users/  http://localhost:3000/users/test/  http://localhost:3000/users/  の順で開いて、挙動を確認してみて下さい。
  • 16. 応用  実際に Web アプリケーションで Session を扱う際は、 DB に Session 情報を入れる などして、データの永続化 (アプリケーションが終了してもデータを保持し続ける こと) を行う必要があります。  SQLite を使うと、別途 DB サーバを起動する必要が無いため簡単に導入できます。  導入  npm install connect-sqlite3 --save  --save オプションを付加することで、 package.json にモジュールの依存関係が保 存されます。  次回から npm install ですべてのモジュールをインストールできるようになります。
  • 17. 応用  app.js を開きます。  上部でモジュールを読み込んでいる部分 (require を呼び出している部分) に 1 行追 記します。  var SQLiteStore = require('connect-sqlite3')(express);  app.use(express.session()); この箇所を app.use(express.session({ store: new SQLiteStore }));  このように書き換えます。
  • 18. 応用  サーバを再起動しても名前を覚えていたら、成功です!  Express はシンプルですが強力な FW で、使いこなすと実用的な Web アプリ ケーションを開発することができます。  今回のサンプルコードはこちらです。  https://github.com/ww24/densan.info-networkcourse/tree/master/nodejs/05