SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
第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回の予定
ご清聴ありがとうございました。
以上です。

Mais conteúdo relacionado

Mais procurados

闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみた
Satoshi Sato
 

Mais procurados (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#言語機能の作り方
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみた
 

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

大阪Node学園八時限目 「expressで作るWebアプリ」
大阪Node学園八時限目 「expressで作るWebアプリ」大阪Node学園八時限目 「expressで作るWebアプリ」
大阪Node学園八時限目 「expressで作るWebアプリ」
Shunsuke Watanabe
 
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたEmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べた
kyon mm
 
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 Talk
mitamex4u
 

Semelhante 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
 

Mais de Koichi Uchimura

Mais 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の会資料_内村
 

Último

Último (10)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

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