SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
第2回勉強会
Node.jsでハンズオン
内村 康一
理屈はいい、作ってみよう
前回の反省として・・・
 導入部分だけの説明で実際に作れるようになるまで
はいきませんでした。
そこで!
 今回はハンズオンの形式で実際に作ってみようと
思います。
目次
第1章 ejsテンプレートの基本
第2章 フォームからデータ送信(POST)
第3章 フォームからデータ送信(GET)
第4章 パラメータを取得しよう
第1章 
ejsテンプレートの基本
• Expressは入っている前提で、プロジェクトを作成。コマ
ンドプロンプト(ターミナル)で以下を入力。
 express -e kagonode
 これでejsテンプレートを使ったExpressプロジェクトが
作成されます。kagonodeフォルダができたのがわかると
思います。
何はともあれExpress
app.jsの中身を書き換えます
今回は外部ファイルを使わないので以下の2行を削ります。
var routes = require('./routes');
var user = require('./routes/user');
また、var app = express();の前後に以下の2行を追加します。
var port = 3000;
var server = http.createServer(app);
以下の3行を削ります(最後)。
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
以下の2行を追加します(最後)。
server.listen(port);
console.log(“listening on port 3000”);                これでOK!
Index.ejsとの連携
プロジェクトフォルダの中にviewというフォルダがあり、そこにindex.ejsが入っていま
す。このejsファイルがクライアント側のブラウザで表示する内容です。ほとんどhtml
と同じ内容です。
このindex.ejsの内容を表示してみましょう。
<<app.js>>
以下の3行を加えます。
app.get('/', function(req, res){
  res.render('index.ejs', {title:“kagonode"});
});
<<index.ejs>>
そのままでOK。
コマンドプロンプトで「node app.js」を実行し、ブラウザで「localhost:3000」にアクセ
スしてみましょう。
kagonodekagonodekagonodekagonode
Welcome to kagonode
この画面が出ます。
成功したら・・・
 タイトル表示を変えたいときは
<app.js>
app.get('/', function(req, res){
  res.render('index.ejs', {title:“hogehoge"});
});
タイトル表示を変えたいときは
ここを変えればOK!
<<app.js>>
app.get('/', function(req, res){
  res.render(‘index.ejs’, {name:“node“, age:”19歳”, height:”168cm”, sex:”男”});
});
<<index.ejs>>
<body>
<h1><%= name %></h1>
<ul>
<li><%= age %></li>
<li><%= height %></li>
<li><%= sex %></li>
</ul>
</body>
いろいろサーバ側から送りたいときは
表示結果はこんな感じ
nodenodenodenode
・19歳
・168cm
・男
index.ejsをコピーしてstat.ejs(ステータス表示用)を作成
<<app.js>>
app.get('/status', function(req, res){
res.render(‘stat.ejs’, {name:”node“,age:”20歳”,”address:”鹿児島市”,tel:”080-0000-
0000”,mail:”hoge@hoge.hoge”});
});
<<stat.ejs>>
<body>
<h1><%= name %></h1>
<ul>
<li><%= age %></li>
<li><%= address %></li>
<li><%= tel %></li>
<li><%= mail %></li>
</body>
index.ejs以外を使うときは
localhost:3000/statusにアクセスすると
stat.ejsの内容を表示する
表示結果はこんな感じ
nodenodenodenode
・20歳
・鹿児島市
・080-0000-0000
・hoge@hoge.hoge
 フォームからデータ送信(POST)
第2章
POSTとGETの基本
POST GET
URLには表示されない
URLにhttp://○○.jp/?q=hoge
といった形で表示される
文字数制限なし 文字数制限あり(数千バイト)
req.body.○○で取り出し req.query.○○で取り出し
app.jsとsubmit.ejsへコードを書きます。
<<app.js>>
app.get('/submit', function(req, res){
res.render(‘result.ejs’, {name:req.body.name, age:req.body.age,
height:req.body.height, sex:req.body.sex});
});
<<submit.ejs>>
<body>
<form method=“post” action=“/submit”>
名前:<input type=“text” name=“name” /><br />
年齢:<input type=“text” name=“age” /><br />
身長:<input type=“text” name=“height” /><br />
性別:<input type=“radio” name=“sex” value=“男” checked>男
<input type=“radio” name=“sex” value=“女”>女<br />
<input type=“submit” value=“送信” />
</form>
</body>
この2つが対応します。
<<result.ejs>>
<body>
<p>名前:<%= name %></p>
<p>年齢:<%= age %></p>
<p>身長:<%= height %></p>
<p>性別:<%= sex %></p>
</body>
結果表示用のresult.ejsも作成します。
送信フォームと結果画面
名前:
年齢:
身長:
性別:
名前:hoge
年齢:32
身長:168
性別:男
送信
男 女
送信フォーム 結果画面
 フォームからデータ送信(GET)
第3章
app.jsとsubmit2.ejsへコードを書きます。
<<app.js>>
app.get('/submit', function(req, res){
res.render(‘result2.ejs’, {name:req.query.name, age:req.query.age,
height:req.query.height, sex:req.query.sex});
});
<<submit2.ejs>>
<body>
<form method=“get” action=“/submit”>
名前:<input type=“text” name=“name” /><br />
年齢:<input type=“text” name=“age” /><br />
身長:<input type=“text” name=“height” /><br />
性別:<input type=“radio” name=“sex” value=“男” checked>男
<input type=“radio” name=“sex” value=“女”>女<br />
<input type=“submit” value=“送信” />
</form>
</body>
この2つが対応します。
<<result2.ejs>>
<body>
<p>名前:<%= name %></p>
<p>年齢:<%= age %></p>
<p>身長:<%= height %></p>
<p>性別:<%= sex %></p>
</body>
結果表示用のresult2.ejsも作成します。
送信フォームと結果画面
名前:
年齢:
身長:
性別:
名前:hoge
年齢:32
身長:168
性別:男
送信
男 女
送信フォーム 結果画面
 パラメータを取得しよう
第4章
<<app.js>>
app.get(“/user/:id”, function(req, res){
var id = req.param('id');
res.render(‘result3.ejs’, {id:id});
});
<<result3.ejs>>
<body>
<p>IDは<%= id %>です</p>
</body>
app.jsに以下を追記
localhost:3000/user/2にア
クセスすると、
IDは2です
と表示されるはずです。
次回はデータベース(MySQL)を
使ったハンズオンを予定してい
ます。
第3回の予定
ご清聴ありがとうございました。
以上です。

Más contenido relacionado

La actualidad más candente

async/await不要論
async/await不要論async/await不要論
async/await不要論bleis tift
 
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京hecomi
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門Hirotaka Kawata
 
Web Workerで○○する話
Web Workerで○○する話Web Workerで○○する話
Web Workerで○○する話ushiboy
 
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版信之 岩永
 
OSS開発勉強会-03
OSS開発勉強会-03OSS開発勉強会-03
OSS開発勉強会-03Kohei KaiGai
 
Javaクラスファイルの読み方
Javaクラスファイルの読み方Javaクラスファイルの読み方
Javaクラスファイルの読み方y torazuka
 
Final LINQ Extensions
Final LINQ ExtensionsFinal LINQ Extensions
Final LINQ ExtensionsKouji Matsui
 
Netcommonsアドオンモジュールセミナー第7回
Netcommonsアドオンモジュールセミナー第7回Netcommonsアドオンモジュールセミナー第7回
Netcommonsアドオンモジュールセミナー第7回Mitsuru Mutaguchi
 
Progressive visualization
Progressive visualizationProgressive visualization
Progressive visualizationnaoyuki miyata
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること信之 岩永
 
C#言語機能の作り方
C#言語機能の作り方C#言語機能の作り方
C#言語機能の作り方信之 岩永
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみたSatoshi Sato
 

La actualidad más candente (17)

Inside FastEnum
Inside FastEnumInside FastEnum
Inside FastEnum
 
最速C# 7.x
最速C# 7.x最速C# 7.x
最速C# 7.x
 
async/await不要論
async/await不要論async/await不要論
async/await不要論
 
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
Web Workerで○○する話
Web Workerで○○する話Web Workerで○○する話
Web Workerで○○する話
 
Clrh 110827 wfho
Clrh 110827 wfhoClrh 110827 wfho
Clrh 110827 wfho
 
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版
 
OSS開発勉強会-03
OSS開発勉強会-03OSS開発勉強会-03
OSS開発勉強会-03
 
Javaクラスファイルの読み方
Javaクラスファイルの読み方Javaクラスファイルの読み方
Javaクラスファイルの読み方
 
Final LINQ Extensions
Final LINQ ExtensionsFinal LINQ Extensions
Final LINQ Extensions
 
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
 
Netcommonsアドオンモジュールセミナー第7回
Netcommonsアドオンモジュールセミナー第7回Netcommonsアドオンモジュールセミナー第7回
Netcommonsアドオンモジュールセミナー第7回
 
Progressive visualization
Progressive visualizationProgressive visualization
Progressive visualization
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
 
C#言語機能の作り方
C#言語機能の作り方C#言語機能の作り方
C#言語機能の作り方
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみた
 

Similar a 第2回鹿児島node.jsの会資料_内村

大阪Node学園八時限目 「expressで作るWebアプリ」
大阪Node学園八時限目 「expressで作るWebアプリ」大阪Node学園八時限目 「expressで作るWebアプリ」
大阪Node学園八時限目 「expressで作るWebアプリ」Shunsuke Watanabe
 
第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村Koichi Uchimura
 
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能Unity Technologies Japan K.K.
 
【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能Unity Technologies Japan K.K.
 
Elmでjavascript
ElmでjavascriptElmでjavascript
Elmでjavascriptkarky7
 
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたEmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたkyon mm
 
【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門 【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門 sandai
 
JavaScript.Next Returns
JavaScript.Next ReturnsJavaScript.Next Returns
JavaScript.Next Returnsdynamis
 
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming ParadigmCookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming ParadigmMinero Aoki
 
仕事でも Groovy を使おう!
仕事でも Groovy を使おう!仕事でも Groovy を使おう!
仕事でも Groovy を使おう!Oda Shinsuke
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るKiyoshi SATOH
 
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talkmitamex4u
 

Similar a 第2回鹿児島node.jsの会資料_内村 (16)

大阪Node学園八時限目 「expressで作るWebアプリ」
大阪Node学園八時限目 「expressで作るWebアプリ」大阪Node学園八時限目 「expressで作るWebアプリ」
大阪Node学園八時限目 「expressで作るWebアプリ」
 
Electron
ElectronElectron
Electron
 
第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村
 
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
 
【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018TOKYO】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
 
Elmでjavascript
ElmでjavascriptElmでjavascript
Elmでjavascript
 
資料
資料資料
資料
 
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたEmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べた
 
【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門 【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門
 
Ext.direct
Ext.directExt.direct
Ext.direct
 
JavaScript.Next Returns
JavaScript.Next ReturnsJavaScript.Next Returns
JavaScript.Next Returns
 
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming ParadigmCookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
仕事でも Groovy を使おう!
仕事でも Groovy を使おう!仕事でも Groovy を使おう!
仕事でも Groovy を使おう!
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作る
 
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk
 

Más de Koichi Uchimura

痛すぽ事業計画書
痛すぽ事業計画書痛すぽ事業計画書
痛すぽ事業計画書Koichi Uchimura
 
第7回鹿児島Node.jsの会勉強会資料
第7回鹿児島Node.jsの会勉強会資料第7回鹿児島Node.jsの会勉強会資料
第7回鹿児島Node.jsの会勉強会資料Koichi Uchimura
 
痛すぽ_プレゼン資料
痛すぽ_プレゼン資料痛すぽ_プレゼン資料
痛すぽ_プレゼン資料Koichi Uchimura
 
第6回鹿児島node.jsの会2資料_内村
第6回鹿児島node.jsの会2資料_内村第6回鹿児島node.jsの会2資料_内村
第6回鹿児島node.jsの会2資料_内村Koichi Uchimura
 
第6回鹿児島node.jsの会資料_内村
第6回鹿児島node.jsの会資料_内村第6回鹿児島node.jsの会資料_内村
第6回鹿児島node.jsの会資料_内村Koichi Uchimura
 
第5回鹿児島node.jsの会資料_内村
第5回鹿児島node.jsの会資料_内村第5回鹿児島node.jsの会資料_内村
第5回鹿児島node.jsの会資料_内村Koichi Uchimura
 
第4回鹿児島node.jsの会資料_内村
第4回鹿児島node.jsの会資料_内村第4回鹿児島node.jsの会資料_内村
第4回鹿児島node.jsの会資料_内村Koichi Uchimura
 
第3回鹿児島node.jsの会資料_内村
第3回鹿児島node.jsの会資料_内村第3回鹿児島node.jsの会資料_内村
第3回鹿児島node.jsの会資料_内村Koichi Uchimura
 
第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村Koichi Uchimura
 

Más de Koichi Uchimura (10)

痛すぽ事業計画書
痛すぽ事業計画書痛すぽ事業計画書
痛すぽ事業計画書
 
第7回鹿児島Node.jsの会勉強会資料
第7回鹿児島Node.jsの会勉強会資料第7回鹿児島Node.jsの会勉強会資料
第7回鹿児島Node.jsの会勉強会資料
 
えあすぽ
えあすぽえあすぽ
えあすぽ
 
痛すぽ_プレゼン資料
痛すぽ_プレゼン資料痛すぽ_プレゼン資料
痛すぽ_プレゼン資料
 
第6回鹿児島node.jsの会2資料_内村
第6回鹿児島node.jsの会2資料_内村第6回鹿児島node.jsの会2資料_内村
第6回鹿児島node.jsの会2資料_内村
 
第6回鹿児島node.jsの会資料_内村
第6回鹿児島node.jsの会資料_内村第6回鹿児島node.jsの会資料_内村
第6回鹿児島node.jsの会資料_内村
 
第5回鹿児島node.jsの会資料_内村
第5回鹿児島node.jsの会資料_内村第5回鹿児島node.jsの会資料_内村
第5回鹿児島node.jsの会資料_内村
 
第4回鹿児島node.jsの会資料_内村
第4回鹿児島node.jsの会資料_内村第4回鹿児島node.jsの会資料_内村
第4回鹿児島node.jsの会資料_内村
 
第3回鹿児島node.jsの会資料_内村
第3回鹿児島node.jsの会資料_内村第3回鹿児島node.jsの会資料_内村
第3回鹿児島node.jsの会資料_内村
 
第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村
 

第2回鹿児島node.jsの会資料_内村