Node.js Express入門から菜々鳥(二)——Cookie+Session+三階建て
7352 ワード
前のページでは、Node.js expressを使って簡単なウェブサイトを構築すると述べました.(「ハローワールドではないですか?」ということです.卵が痛くて、ファイル全体の文字列を返したら、どんなサイトでも作れます.)及びejsテンプレートの使用も可能です. この一篇は本来は直接に三階建ての話をしたいのですが、後から考えると、まずCookieとSessionの使用について話して、MVCに協力して完全な例を作ります.ページだけを見てジャンプしても面白くないです. Cookie ウェブサイトの開発には必ずCookieが使われますよね.クライアントに情報を保存できるいいものです.expressではどのように取得し、設定しますか? 直接例を示して、コードに従って、注釈を見ながら歩いていけば分かります.
ウェブサイトの開発はもちろんSessionでブラウザに置いてはいけない情報を保存します.expressが提供するSessionの性能と安全性は、本料理の鳥は確かに知らないです.asp.netのsessionは有名なだけです.今は分散式キャッシュが行われていますが、皆さんのSessionはmemcache、redisなどの拡張しやすいキャッシュに書いています.でも、これは本文の範囲を超えています.意図者はnpm install redisを検索できます. くどくど言って、ブラウザがクッキーを禁止した後、sessionはよく失効します.どうしてですか?興味があったら調べてみてください.お金を生む道かもしれません.
説明しないで、この兄弟達の書いたのはとても立派で、知っていたいなら、つけて見に行きましょう. http://blog.csdn.net/danhuang2012/article/details/7463291
4.最初からexpressに基づくmvcを構築する これは自分で書いたMVCの枠組みです.足りないのは娯楽だけです.
Step 1.node.js Expressフレームを構築する フォルダを作成します.たとえばMVCです. このフォルダのルートディレクトリに入り、コマンドラインにexpress MVCを入力します. そしてMVCフォルダに入ります. コマンドラインで 入力 スドnpm install wait……
Step 2.ExpressフレームによるMVCの構築 ルートディレクトリの下で、routeフォルダを削除して、viewフォルダの下のすべてのファイルを削除します. ルートディレクトリを置換するアプリ.jsファイルの内容は以下の通りです.
controllerに応答controlerを書いて、viewは応答viewを書きます.
ルールは何ですか?関所を売ってください.コードを見れば分かりますよ.
次の編では、nodeの簡単な操作mongodbを試してみましょう.
本シリーズで使用されているオペレーティングシステムはuuntuで、Nodeバージョンは0.0.0で、Expressバージョンは3.2.0で、ejsバージョンは0.8.3で、現在の最新バージョンはほとんど全部そうです.
Cookie
var express = require('http://www.cnblogs.com/')
, app = module.exports = express();
// favicon.icon,
app.use(express.favicon());
// logger middleware, console
if ('test' != process.env.NODE_ENV)
app.use(express.logger(':method :url'));
// cookieParser express Cookie , req.cookie
// req.cookie cookie ,
app.use(express.cookieParser('my secret here'));
// bodyParser() express , urlencoded,multipart,json
//
//app.use(express.json());
//app.use(express.urlencoded());
//app.use(express.multipart());
app.use(express.bodyParser());
//
app.get('/', function(req, res){
// req.cookies.key cookies value
if (req.cookies.remember) {
res.send('Remembered :). Click to <a href="/forget">forget</a>!.');
} else {
res.send('<form method="post"><p>Check to <label>'
+ '<input type="checkbox" name="remember"/> remember me</label> '
+ '<input type="submit" value="Submit"/>.</p></form>');
}
});
app.get('/forget', function(req, res){
// key , value
res.clearCookie('remember');
res.redirect('back');
});
app.post('/', function(req, res){
var minute = 60000;
// key ,value , cookie
// :res.cookie('name', 'laodoujiao', { domain: '.cnblog.com', path: '/admin', secure: true,expires: new Date(Date.now() + 900000), httpOnly: true,maxAge:900000 });
// maxAge , cookie ,
if (req.body.remember) res.cookie('remember', 1, { maxAge: minute });
res.redirect('back');
});
if (!module.parent){
app.listen(3000);
console.log('Express started on port 3000');
}
2.セッション ウェブサイトの開発はもちろんSessionでブラウザに置いてはいけない情報を保存します.expressが提供するSessionの性能と安全性は、本料理の鳥は確かに知らないです.asp.netのsessionは有名なだけです.今は分散式キャッシュが行われていますが、皆さんのSessionはmemcache、redisなどの拡張しやすいキャッシュに書いています.でも、これは本文の範囲を超えています.意図者はnpm install redisを検索できます. くどくど言って、ブラウザがクッキーを禁止した後、sessionはよく失効します.どうしてですか?興味があったら調べてみてください.お金を生む道かもしれません.
Session
var express = require('../..');
var app = express();
app.use(express.logger('dev'));
// Session session_id, ( )
app.use(express.cookieParser('123'));
// req.session.key value
app.use(express.session());
app.get('/', function(req, res){
var body = '';
//req.session.key value
if (req.session.views) {
++req.session.views;
} else {
req.session.views = 1;
body += '<p>First time visiting? view this page in several browsers :)</p>';
}
res.send(body + '<p>viewed <strong>' + req.session.views + '</strong> times.</p>');
});
app.listen(3000);
console.log('Express app started on port 3000');
3.get post伝参を取得する 説明しないで、この兄弟達の書いたのはとても立派で、知っていたいなら、つけて見に行きましょう. http://blog.csdn.net/danhuang2012/article/details/7463291
4.最初からexpressに基づくmvcを構築する これは自分で書いたMVCの枠組みです.足りないのは娯楽だけです.
Step 1.node.js Expressフレームを構築する フォルダを作成します.たとえばMVCです. このフォルダのルートディレクトリに入り、コマンドラインにexpress MVCを入力します. そしてMVCフォルダに入ります. コマンドラインで 入力 スドnpm install wait……
Step 2.ExpressフレームによるMVCの構築 ルートディレクトリの下で、routeフォルダを削除して、viewフォルダの下のすべてのファイルを削除します. ルートディレクトリを置換するアプリ.jsファイルの内容は以下の通りです.
app.js
var express = require('express');
var app = module.exports = express();
//express , config.js
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
app.use(express.favicon());
if (!module.parent) app.use(express.logger('dev'));
app.use(express.static(__dirname + '/public'));
app.use(express.cookieParser('some secret here'));
app.use(express.session());
app.use(express.bodyParser());
app.use(express.methodOverride());
//express ,asp.net PreLoad ,mvc ActionFilter
// ,
app.response.message = function(msg){
var sess = this.req.session;
sess.messages = sess.messages || [];
sess.messages.push(msg);
return this;
};
app.use(function(req, res, next){
var msgs = req.session.messages || [];
res.locals.messages = msgs;
res.locals.hasMessages = !! msgs.length;
req.session.messages = [];
next();
});
//
app.use(function(err, req, res, next){
if (~err.message.indexOf('not found')) return next();
console.error(err.stack);
res.status(500).render('5xx');
});
// , 。
// 404 ,
app.use(function(req, res, next){
res.status(404).render('404', { url: req.originalUrl });
});
// ,
require('./route')(app, express);
if (!module.parent) {
app.listen(3000);
console.log('
listening on port 3000
');
}
ルートディレクトリに追加するroute.jsファイルの内容は以下の通りです.route.js
// ,
//
// : html ,
// ,
var routeMvc;
module.exports = function(app, express) {
app.all('/', function(req, res) {
app.set('views', __dirname + '/views/index');
return routeMvc('index', 'index', req, res);
});
app.all('/:controller', function(req, res, next) {
app.set('views', __dirname + '/views/'+req.params.controller);
return routeMvc(req.params.controller, 'index', req, res);
});
app.all('/:controller/:method', function(req, res, next) {
app.set('views', __dirname + '/views/'+req.params.controller);
return routeMvc(req.params.controller, req.params.method, req, res);
});
app.all('/:controller/:method/:id', function(req, res, next) {
app.set('views', __dirname + '/views/'+req.params.controller);
return routeMvc(req.params.controller, req.params.method, req, res);
});
}
routeMvc = function(controllerName, methodName, req, res, next) {
var controller, data, method;
controller = null;
if (!(controllerName != null)) controllerName = 'index';
controller = require("./controller/" + controllerName);
data = null;
if (methodName != null) {
methodName = methodName.replace(/[^a-z0-9A-Z_-]/i, '');
method = eval('controller.' + methodName);
method(req,res);
}
}
Step 3.MVC Testcontrollerに応答controlerを書いて、viewは応答viewを書きます.
ルールは何ですか?関所を売ってください.コードを見れば分かりますよ.
次の編では、nodeの簡単な操作mongodbを試してみましょう.
本シリーズで使用されているオペレーティングシステムはuuntuで、Nodeバージョンは0.0.0で、Expressバージョンは3.2.0で、ejsバージョンは0.8.3で、現在の最新バージョンはほとんど全部そうです.