1.添加登录视图添加视图我们之前已经实现了注册功能,用户可以注册成功,接下来我们开始让用户登录,本节我们来实现用户登录功能。并在登录成功后,跳转到产品页面查看产品。首先,我们还是在views目录下添加登录视图页面——login.html,效果图如下:2、访问登录视图。如果访问视图有登录页面,则在注册页面的登录按钮上添加登录页面的链接。相应着陆页的注册按钮也是如此。这里我们还是添加对应的文件来处理登录页面请求,在routes目录下新建一个名为login.js的文件,先添加一个处理get请求的方法,代码参考如下:module.exports=function(app){app.get('/login',function(req,res){res.render('login');})};像注册文件一样添加到index.js中,如下:require('./login')(app);在注册视图页面的register()函数的回调中,当注册成功后,我们可以跳转到登录页面,如下:location.href='login';尝试登录和注册按钮跳转成功!3、添加登录函数实现登录我们为登录按钮添加点击事件和对应的函数login(),参考如下:functionlogin(){vardata=$("form").serialize();$ajax({url:'/login',type:'POST',data:data,success:function(data,status){if(status=='success'){location.href='home';}},error:function(data,status){if(status=='error'){location.href='login';}}})}在对应的login.js文件中,我们要添加对应的post请求处理方法。4、登录处理关于登录视图页面的post请求处理,我们需要判断用户输入的用户名是否存在,密码是否正确,并使用变量保存相应的提示信息。当用户名和密码都正确时,返回成功,保存用户的个人信息,用于判断用户的登录状态。详情请见报名查看页面的发帖要求。app.post('/login',function(req,res){varUser=global.dbHelper.getModel('user'),uname=req.body.uname;User.findOne({name:uname},function(error,doc){if(userdoesnotexist){req.session.error='Usernamedoesnotexist!';res.sendStatus(404);}elseif(userexists,passwordiswrong){req.session.error="密码错误!";res.sendStatus(404);}else{req.session.user=doc;res.sendStatus(200);}})});还记得我们登录时保存的局部变量messagehtml标签中包含了相应的提示信息。我们也可以在登录页面使用它。用法:<%-message%>,指定相应的位置即可。5.增加产品页面视图。用户登录成功后,产品页面视图会跳转到主页视图页面(产品主页),在这里可以浏览和选择产品。还是在views目录下,添加首页产品视图页面,如下简单效果图:用户登录成功后,跳转到首页,这里我们还是单独处理,新建home.jsroutes目录下的文件来处理来自home的get请求。这里我们假设如果用户没有登录,他将无法查看产品主页。因此,在请求处理中,我们还需要判断用户的登录状态。这可以使用在登录过程中保存的用户个人信息。关于商品页面的视图展示,我们只需要有它的名称、价格、图片即可。这里使用ejs模板进行循环展示。可以参考以下方法:注:商品:商品收集所有数据,内置图片路径为"/example/img"