node.jsの学習(ドットインストール)(#11~#13)
node.jsの学習(ドットインストール)(#11~#13)
node.jsを使用して掲示板(BBS)を作成するレッスンでした。
最後スッキリしませんでしたが
学習した経験をシェアさせていただきます。
既にあるソースに以下の色文字部分を追加するだけ
掲示板て以外と簡単に作れるんですね...
※参考URL https://dotinstall.com
★掲示版の作成
#public_html/bbs.ejs
<!doctype html>
<html lang ="ja">
<head>
<title>BBS</title>
<meta charset="utf-8">
</head>
<body>
<form method ="post">
<input type="text" name="name">
<input type="submit" value="Post!">
<ul>
<% for (var i=0; i< posts.length; i++ ) {%>
<li><%= posts[i] %></li>
<% } %>
</ul>
</body>
htmlworld_next.js
var http=require('http');
fs = require('fs');
ejs = require('ejs');
qs = require('querystring');
var settings = require('./settings.js');
var server = http.createServer();
var template = fs.readFileSync(__dirname + '/public_html/bbs.ejs' ,'utf-8');
var posts = [];
function renderForm(posts, res){
var data = ejs.render(template,{
posts: posts
});
res.writeHead(200,{'Content-Type': 'text/html'});
res.write(data);
res.end();
}
server.on('request',function(req,res){
if(req.method == 'POST'){
req.data = "";
req.on("readable", function(){
req.data += req.read();
})
req.on("end",function(){
var query = qs.parse(req.data);
posts.push(query.name);
renderForm(posts, res);
})
}else{
renderForm(posts, res);
}
});
server.listen(settings.port, settings.host);
console.log("server listening ...");
※結果
サーバ稼働後にブラウザで表示。
投稿した内容はPost!する度に、リスト構造で追加されました(test,next,why)
が、なぜかnullが後ろに必ず表示される...
なぜ?(使用しているブラウザはGoogleChrome..)
スッキリしませんが、後で調べるとして今日はここまで。