ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:151.05KB ,
资源ID:16896108      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16896108.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(nodejs开发博客记录Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

nodejs开发博客记录Word格式.docx

1、module.exports = function(app) app.get(,function(req,res);博客系统中的index.js的雏形:,function(req,res)主页/regreg注册 app.post(/loginlogin登录/logout/postpost发表 你会发现reg、login和post都有get和post方法,我们可以这么理解:get方法是实现当用户试图访问这个网页时要显示些什么,post方 法是当从这个网页上发出数据(这里时提交表单)时要干些什么,所以访问/和/logout就不需要post方法了。render函数的意思是,当你要访问 比如主页时,服

2、务器找到index.ejs文件并替换变量title的值为字符串主页路由控制的雏形出来了,下面写视图部分,在views下面新建几个文件,index.ejs、login.ejs、reg.ejs、post.ejs,然后再给每个页面添加统一的头部导航(header.ejs)和底部说明(footer.ejs),使用的时候把和分别放在头尾就行了。header.ejshtmlheadmeta http-equiv=Content-Type content=text/html; charset=UTF-8titleBloglink rel=stylesheet href=stylesheets/style.c

3、ss/headbodyheaderh1%= title %/h1/headernavspana title=主页/主页/span登录/login登录注册/reg注册articlefooter.ejs/article/body/htmlindex.ejs%- include header %这是主页%- include footer %login.ejsform method=post name=form id= tbodytrtdlabel for=username用户名:/label/tdinput type=text placeholder=请输入用户名/trpassword密码:请输入密

4、码td colspan=2 class=btn submit value=/tbody/table/formreg.ejscomfirm_pwd再次输入密码:请再次输入密码然后再修改下style.css:nav a:hover background: #2ECC71;tr:last-child text-align: center;td height: 24px; padding: 5px;td:first-child right; left;td inputtype=,td inputtype= display: block; border: 1px solid gray; border-r

5、adius: 3px;td.btntd.btn input0 10px; font-size: 16px; font-weight: bold; margin-top:预览下页面:现在只是实现了视图,逻辑操作还没写,那涉及到数据库了,下一节吧。nodejs-express开发个人博客(二)207次3nodejs-express开发个人博客(2) 上一部分已经实现了视图的雏形,现在加上逻辑操作。登陆、注册、文章发表都需要用到数据库的数据存取,用的比较多的就是mongodb了。MongoDB 是一个对象数据库,它没有表、行等概念,也没有固定的模式和结构,所有的数据以文档的形式存储。所谓文档就是一个

6、关联数组式的对象,它的内部由属性组成,一个属性对应的值可能是一个数、字符串、日期、数组,甚至是一个嵌套的文档。下面是一个MongoDB 文档的示例: _id : ObjectId( 4f7fe8432b4a1077a7c551e8 ), uid 2004,byvoid,net9 nicknameBYVoidsurnameKuogivennameCarbofullnameCarbo Kuoemails byvoid, byvoid.kcp ,websiteaddressZijing 2#, Tsinghua University 看着眼熟吧?恩,和json的格式一样。 使用方法:mongod -

7、dbpath C:Program Filesnodejsmongodbdata -logpath=C:Program Filesnodejsmongodblogsmongodb.log -install 去官网下载mongodb,解压到D:softdatanodejsmongodb,在mongodb文件夹下新建文件夹取名myblog用来存放我们的数据。然后新打开一个cmd窗口,cd到我 们的D:softdatanodejsmongodbbin目录下,输入mongod -dbpath D:softdatanodejsmongodbblog设置数据库路径并启动数据库,最小化窗口不要关闭(以后启动也

8、这么启动,另外可以进到bin目录下通过start mongo命令来启动mongodb的控制台,方便查看自己的数据库中的内容,一些常见的命令有:db.users.find()、db.users.count()、db.users.remove()等,具体是干什么的,自己试过就知道了)。接下来我们在node中连接mongodb,打开 package.json,在 dependencies 属性中添加一行代码:mongodb:*,然后npm install安装mongodb模块,接下来在blog文件夹下创建 settings.js 文件,用于保存数据库的连接信息:module.exports = co

9、okieSecret:myblog, db:blog host:localhost 好了,数据库准备好了,下面就来写数据库存放的数据模型了。 在blog下面新建一个文件夹models用于存放数据模型。在models下面新建db.js用于配置数据库:var settings = require(./settings), Db = require(mongodb).Db, Connection = require().Connection, Server = require().Server;module.exports = new Db(settings.db, new Server(setti

10、ngs.host, Connection.DEFAULT_PORT, );接下来安装connect-mongo模块用来存储会话信息到数据库,关于connect-mongo的说明在nodejs开发指南里面做了详细解释,不多说。在 package.json 的dependencies中添加一行代码:connect-mongo,npm install安装connect-mongo模块。然后在app.js里面引入数据库的相关配置文件就行了,先在“var path = require(path);”后添加以下内容:var MongoStore = require(connect-mongo)(expre

11、ss);/注意:后面有(express)./settings在“app.use(express.methodOverride();”后添加:app.use(express.cookieParser();app.use(express.session( secret: settings.cookieSecret, store: new MongoStore( settings.db ) );至此数据库的配置已经做好了,下面可以用了。登录和注册都需要比对数据库中的用户信息。在models下新建一个user.js,里面封装了对用户的操作:var mongodb = require(./dbfunct

12、ion User(user) this.name = user.name; this.password = user.password;module.exports = User;User.prototype.save = function save(callback) var user = name: this.name, password: this.password, ;mongodb.open(function(err, db) if(err) return callback(err); db.collection(users, function(err, collection) mo

13、ngodb.close(); collection.ensureIndex(name, unique:true collection.insert(user,safe: true, function(err, user) callback(err, user););User.get = function get(username, callback) collection.findOne( username ,function(err, doc) if(doc) var user = new User(doc); else callback(err, null);然后在index.js里面修改

14、登录的处理过程,即app.get()和app.post(),修改如下,同时为了使用User,需要在index.js开始的地方引入user.js, function(req, res) res.render( title:, user:req.session.user, success:req.flash(success).toString(), error:error).toString()app.post( var md5 = crypto.createHash(md5 password = md5.update(req.body.password).digest(base64 User.g

15、et(req.body.username, function(err, user) if(!user) req.flash(, 用户不存在 return res.redirect( if(user.password != password)密码错误 req.session.user = user;,登陆成功 res.redirect(注意到req.flash了?恩,这个是用于显示错误信息的,需要用到flash模块,在命令行中输入npm installconnect-flash来安装flash,然后在app.js中var settings后面加上var flash = require(conne

16、ct-flash在“app.set(view engineejsapp.use(flash();这样就可以使用flash的通知功能了。还注意到什么没?crypto!crypto 是 Node.js 的一个核心模块,功能是加密并生成各种散列,使用它之前首先要声明 var crypto = require(crypto)。代码中使用它计算了密码的散列值。到这里,应该登录就写完了,试试?点击登录按钮没有任何提示?因为还没有加为了显示信息,还需要引入视图助手,node.js开发指南中这样描述:“为了实现不同登录状态下页面呈现不同内容的功能,我们需要创建动态视图助手,通过它我们才能在视图中访问会话中的用

17、户数据。同时为了显示错误和成功的信息,也要在动态视图助手中增加响应的函数。 ”打开 app.js,在http.createServer()前添加以下代码:app.use(function(req,res,next)var err = req.flash( success = req.flash(res.locals.user = req.session.user;res.locals.error = err.length ? err : null;res.locals.success = success.length ? success :next();在header.ejs的最后添加以下代码

18、:% if (locals.success) %div %= locals.success %/div% % if (locals.error) %div%= locals.error %好了,再试试登录?因为这个时候的数据库是空的,所以用户名不存在。那接下来就通过注册添加新用户吧?毕竟mongodb的用法还不是很熟悉。修改index.js中的reg的get和post处理:, function(req,res) if(req.bodypassword-repeat != req.bodypassword)两次输入的口令不一致 var password = md5.update(req.body.password).digest( var newUser = new User( req.body.username, password, User.get(newUser.name, function(err, user) if(user) err = 用户已存在;, err); newUser.save(function(err),err); req.session.user = newUser; r

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1