node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能

前端之家收集整理的这篇文章主要介绍了node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

同志们,经过不懈的努力,查了各种文档,终于鼓捣出了一个稍微像样一点的node项目,当然如果直接拿去项目里用,这个demo还太简单,毕竟一个完整的登录注册还有很多实际的内容,本案例MysqL用户列表里,为便于理解,只设置了username 和password两个字段,正常的登录注册,肯定会有更多的字段的。但是对于初学node的人来说,比如笔者,还是学习到了不少内容,甚至,紧张的我不知如下下笔,肯定这个是参考了很多网上其他少年博客,以后这个登录注册demo会依据项目的需要而有所改进,

效果如下

效果.gif

项目构架

主入口app.js

app.js为程序程序主要入口,一般主要用来写我们引入的那些中间件及各种设置

logo的中间件 var favicon = require('serve-favicon'); // NodeJs中Express框架使用morgan中间件记录日志 // Express中的app.js文件已经默认引入了该中间件var logger = require('morgan'); // 使用app.use(logger('dev'));以将请求信息打印在控制台,便于开发调试, // 但实际生产环境中,需要将日志记录在log文件里 var logger = require('morgan'); // 存储登录信息中间件 var cookieParser = require('cookie-parser'); // 解析请求体的中间件 var bodyParser = require('body-parser'); // 引入模块的js文件 var routes = require('./routes/index'); // var users = require('./routes/user'); // 引入session中间件 var session=require('express-session'); // 创建项目示例 var app = express(); // 引入我们需要的模板 app.set('views',path.join(__dirname,'views')); app.set('view engine','ejs'); // 用摩记录请求 app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); // 利用cookieParser中间件存取信息 app.use(cookieParser("Luck")); // 利用session中间件存取信息 app.use(session({ secret:'luck',resave:false,saveUninitialized:true })); // 静态化我们的public文件下的文件,使其可以直接引用 app.use(express.static(path.join(__dirname,'public'))); app.use('/',routes); // app.use('/users',users); // 捕捉404状态 app.use(function(req,res,next) { var err = new Error('Not Found'); err.status = 404; next(err); }); module.exports = app; app.listen(3000,'127.0.0.1') routes下的index.js文件 index.js这里我用来处理页面的路由跳转 var express = require('express'); var router = express.Router(); // 为数据库链接的js文件,可查询数据库中的用户名和密码等信息 var usr=require('netRequest/dbConnect'); // 获取首页登录信息 router.get('/',function(req,res) { if(req.cookies.islogin){ req.session.islogin=req.cookies.islogin; } if(req.session.islogin){ res.locals.islogin=req.session.islogin; } res.render('index',{ title: 'HOME',test:res.locals.islogin}); }); // 登录页处理 router.route('/login') // get请求渲染页面 .get(function(req,res) { if(req.session.islogin){ res.locals.islogin=req.session.islogin; } if(req.cookies.islogin){ req.session.islogin=req.cookies.islogin; } res.render('login',{ title: '用户登录',test:res.locals.islogin}); }) // post请求查询用户信息 .post(function(req,res) { client=usr.connect(); result=null; // 调用数据库方法 usr.selectFun(client,req.body.username,function (result) { if(result[0]===undefined){ res.send('没有该用户'); }else{ if(result[0].password==req.body.password){ req.session.islogin=req.body.username; res.locals.islogin=req.session.islogin; res.cookie('islogin',res.locals.islogin,{maxAge:60000}); res.redirect('/home'); }else{ res.redirect('/login'); } } }); }); // 退出登录页处理 router.get('/logout',res) { res.clearCookie('islogin'); req.session.destroy(); res.redirect('/'); }); // home页处理 router.get('/home',res) { if(req.session.islogin){ res.locals.islogin=req.session.islogin; } if(req.cookies.islogin){ req.session.islogin=req.cookies.islogin; } res.render('home',{ title: 'Home',user: res.locals.islogin }); }); // 注册页处理 router.route('/reg') // get请求渲染页面 .get(function(req,res){ res.render('reg',{title:'注册'}); }) // post请求注册用户 .post(function(req,res) { client = usr.connect(); // 调用数据库方法 usr.insertFun(client,req.body.password2,function (err) { if(err) throw err; res.send('注册成功'); }); }); module.exports = router; node_modules中netRequest/dbConnect.js

dbConnect.js

MysqL=require('MysqL'); // 现在只是练习可以直接为数据库创建链接, // 用户多时需要创建连接池 function connectServer(){ var client=MysqL.createConnection({ host:'172.16.20.103',port:3308,database:'test',user:'JRJ_Win',password:'FT%^$fjYR56' }) return client; } function selectFun(client,username,callback){ client.query('select password from win.luck_user where username="'+username+'"',function(err,results,fields){ if(err) throw err; callback(results); }); } function insertFun(client,password,callback){ client.query('insert into win.luck_user value(?,?)',[username,password],result){ if( err ){ console.log( "error:" + err.message); return err; } callback(err); }); } exports.connect = connectServer; exports.selectFun = selectFun; exports.insertFun = insertFun;

剩下即为页面模板

login.ejs

<% if(locals.islogin) { %>

用户: <%= test %> 已经登陆。

退出登录 <% } else{ %>
用户名
登录
<% } %>
<%- include footer %>

index.ejs

用户:<%= test %>

已经登陆 <% }else{%>

请登录后查看

<%}%>
<%- include footer %>

reg.ejs

用户名
注册
<%- include footer %>

header.ejs

<Meta charset="UTF-8"/> Test

footer.ejs

项目的主要代码都在此,想要读懂的话,估计要费一段时间的。

总结

以上所述是小编给大家介绍的node.js+express+MysqL+ejs+bootstrop实现网站登录注册功能。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

原文链接:https://www.f2er.com/express/34204.html

猜你在找的Express 相关文章