日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开始nodejs+express的学习+实践(8)

發布時間:2023/12/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开始nodejs+express的学习+实践(8) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

1.session使用

介紹的非常詳細: http://www.cnblogs.com/chenchenluo/p/4197181.html

對比我們的app.js需要引入express-session模塊和使用這個模塊,在package依賴,并加載。

我們修改app.js

我們既然有了session,我們開始測試使用,在訪問首頁我們就是設置session內容,當我們跳轉時,比如到hello,我們是還能訪問到設置session的值,這就表示session安裝成功。

index.js對首頁和hello修改,加入session賦值

????app.get('/',function(req,?res){var?currentpage=req.query.currentpage?req.query.currentpage:1;model.model_index(currentpage,function(items,len,allpage){req.session.love?=?'我愛你';res.render('index',?{?title:?'Express',hello:?'hello?world!',arr:?items,len:len,allpage:allpage,cur:currentpage,love:?req.session.love?});});});app.get('/hello',??function(req,?res){var?currentpage=req.query.currentpage?req.query.currentpage:1;model.model_hello(currentpage,function(items){res.render('hello',?{?arr:?items,love:?req.session.love?});});});

在index.html和hello.html顯示session內容:

<h1><%=?love?%></h1>

我們訪問首頁和hello:

我們在訪問首頁,會給session賦值,當我們跳到hello頁面,,req對象的session值我們還是可以拿到,所以就在hello頁面可以顯示了。

用途最常用的就是我們登陸后其他頁面登錄信息的顯示。

session是安裝很簡單,加載模塊,設置參數就可以使用了,刪除session我們就可以對

req.session.con=null的設置就ok了。

index.js修改如下:

var?formidable?=?require('formidable'); var?fs?=?require('fs'); var?crypto?=?require('crypto'); var?model?=?require('../model/model'); function?rout(app){app.get('/',function(req,?res){var?currentpage=req.query.currentpage?req.query.currentpage:1;model.model_index(currentpage,function(items,len,allpage){req.session.love?=?'我愛你';res.render('index',?{?title:?'Express',hello:?'hello?world!',arr:?items,len:len,allpage:allpage,cur:currentpage,love:?req.session.love?});});});app.get('/hello',??function(req,?res){var?currentpage=req.query.currentpage?req.query.currentpage:1;model.model_hello(currentpage,function(items){res.render('hello',?{?arr:?items,love:?req.session.love?});});});app.get('/hellomore',??function(req,?res){model.model_hello(req.query.more,function(items){res.send(items);});});app.get('/list',??function(req,?res){res.render('list',?{?text:?req.query.id?});});app.get('/login',??function(req,?res){res.render('login');});app.post('/logincheck',??function(req,?res){var?user=?req.body.user;var?pass=?req.body.pass;if(user=="tom"?&&?pass=="tom"){res.redirect('/');}else{res.redirect('/login');};});app.get('/file',??function(req,?res){res.render('file');});app.post('/upfile',??function(req,?res){//codevar?form?=?new?formidable.IncomingForm();form.uploadDir?=?"./upload";form.parse(req,?function(err,?fields,?files)?{if?(err)?{res.redirect('/file');}var?tmp_path,?target_path;if?(files.file.size?>?0)?{?//表示有文件上傳tmp_path?=?files.file.path;//內存中的文件,當前文件目錄var?picType?=??files.file.name.split(".")[1];//后綴名//移動目的目錄target_path?=?'./public/images/pic_1.'?+?picType;//同步方式移動文件fs.renameSync(tmp_path,?target_path);}else{res.redirect('/file');};});});app.get('/fs',??function(req,?res){fs.writeFile('./fs/me/1.txt',?'read?me','utf8',function?(err)?{if?(err)?throw?err;});});app.get('/crypto',??function(req,?res){var?pass="admin";var?md5?=?crypto.createHash('md5');var?mpass=md5.update(pass).digest('hex');var?rmpass=mpass.substring(2);res.render('crypto',?{?res:pass,resm:mpass,resrm:rmpass?});});app.get('/globals',??function(req,?res){res.render('globals',?{?res:__dirname+":"+__filename?});}); }; exports.rout=rout;

app.js的修改:

var?express?=?require('express'); var?http?=?require('http'); var?path?=?require('path'); var?favicon?=?require('static-favicon'); var?logger?=?require('morgan'); var?cookieParser?=?require('cookie-parser'); var?session?=?require('express-session'); var?bodyParser?=?require('body-parser'); var?routes?=?require('./routes/index'); var?users?=?require('./routes/user'); var?app?=?express(); //?view?engine?setup app.engine('html',?require('ejs').renderFile); app.set('views',?path.join(__dirname,?'views')); app.set('view?engine',?'html'); app.use(favicon()); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded()); app.use(cookieParser()); app.use(session({secret:?'12345',name:?'testapp',???//這里的name值得是cookie的name,默認cookie的name是:connect.sidcookie:?{maxAge:?80000?},??//設置maxAge是80000ms,即80s后session和相應的cookie失效過期resave:?false,saveUninitialized:?true, })); app.use(express.static(path.join(__dirname,?'public'))); app.use(app.router); routes.rout(app); app.get('/users',?users.list); ///?catch?404?and?forwarding?to?error?handler app.use(function(req,?res,?next)?{var?err?=?new?Error('Not?Found');err.status?=?404;next(err); }); ///?error?handlers //?development?error?handler //?will?print?stacktrace if?(app.get('env')?===?'development')?{app.use(function(err,?req,?res,?next)?{res.render('error',?{message:?err.message,error:?err});}); } //?production?error?handler //?no?stacktraces?leaked?to?user app.use(function(err,?req,?res,?next)?{res.render('error',?{message:?err.message,error:?{}}); });module.exports?=?app;

package.json

{"name":?"application-name","version":?"0.0.1","private":?true,"scripts":?{"start":?"node?./bin/www"},"dependencies":?{"express":?"~3.4.8","static-favicon":?"~1.0.0","morgan":?"~1.0.0","cookie-parser":?"~1.0.1","body-parser":?"~1.0.0","debug":?"~0.7.4","ejs":?"~0.8.5","formidable":?"*","mongodb":"*","mongoskin":"*","express-session":"*"} }

2.總結

到這里關于nodejs+express的學習和實踐就幾乎結束了,

當然一個網站一般會有下面功能:

注冊

登錄

數據顯示

數據添加,修改,刪除等等等

我們在分頁那里學了數據的查詢,其他的都算是類似處理,自己摸索就可以了,

還有登錄的操作,其實session就是為登陸后使用的,前面文件上傳操作也是為頭像做基礎的,驗證碼也是要在session設置和判斷,加密模塊的學習就是對注冊密碼和登錄密碼的處理,很多很多處理吧,那都不屬于入門的了,不在做學習和實踐介紹了。

下一篇就是爬蟲抓取的介紹,最簡單的操作一次。

轉載于:https://my.oschina.net/tbd/blog/552734

總結

以上是生活随笔為你收集整理的开始nodejs+express的学习+实践(8)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。