时间:2021-02-16 10:41:34 | 栏目:NodeJS | 点击:次
为了数据库课设,打算后台用node搭建,前台用vue搞个博客出来(因为前段时间在学啊)。本来node不想用框架,喜欢先打好基础的,奈何3个星期要把他做完和应付各种考试,所以最后还是用了express,大大简化我的学习成本。
数据库我选了比较“正式”的MySQL,代码方面这个比MongoDB复杂一些。而且这是数据库课设,如果用mongodb老师肯定让我挂了,因为没有涉及到设置主键、外键等。
先在主入口js引入登录注册业务js和发起一个监听端口
var express = require('express'); var user = require('./controll/user'); var app = new express(); app.use(express.static('public')); //静态资源的入口 app.use('/user',user); //这样写是为了以后如果改变了请求路径,也不用改逻辑js而是改这行的路径即可 var server = app.listen(3000)
html
$("#signup").click(function(){ $.ajax({ url: "/user/signup", type: 'post', data: $("#formid").serialize(), success: function(data) { if(data.status == 99999) { alert("3秒后跳转到首页"); setTimeout(function() { location.href='http://'+window.location.host+'/html/index.html'; },3000) }else { alert('登录名或密码错误') } } }) }) $("#register").click(function(){ $.ajax({ url: "/user/register", type: 'post', data: $("#formRegister").serialize(), success: function(data) { console.log(data); if(data.status == 99999) { alert("注册成功") }else { alert("登录名已经有人用") } } }) })
user.js
var mysql = require('mysql'); var express = require('express'); var bodyParser = require('body-parser'); var cookieParser = require('cookie-parser'); var session = require('cookie-session'); function select(sql) { var promise = new Promise(function(resolve,reject) { var result = null; var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'root' }); connection.connect(); connection.query("USE test"); connection.query(sql, function (err, results, fields) { if (err) { console.log("err"); reject(err); }else { console.log("yes"); if(results.length > 0) { resolve({status: 99999}); }else { resolve({status: 00000}); } } } ); connection.end(); }) return promise; } var router = express.Router(); router.use(bodyParser.urlencoded({ extended: true })); router.use(cookieParser()) router.use(session({ secret: 'blog' })) router.use(function timeLog(req,res,next) { var _user = req.session.user; if(_user) { //router.locals.user = user; } next(); }) //登录 router.post('/signup',function(req, res) { var _user = req.body.user; var name = _user.name; var password = _user.password; select('SELECT * FROM name WHERE name = "'+ name + '" AND password = "' + password + '";').then(function(data) { //session存user name和userid req.session.user = name; data.status > 50 ? data.url = '/html/index.html' : null; res.json(data); res.end(); req.redirect("/"); }).catch(function(err){}) }) //注册 router.post('/register',function(req, res) { var _user = req.body.user; var name = _user.name; var password = _user.password; console.log(name+" "+password) select('SELECT * FROM name WHERE name = "'+ name + '";') .then(function(data) { if(data.status == 99999) { console.log("已有此用户名") res.json({status:00000}); res.end(); }else { select('INSERT INTO name(name,password) VALUES ("'+name+'", "'+password+'");') .then(function(data) { res.json({status:99999}); res.end(); }).catch(function(err){}) } }).catch(function(err){ }) }); //退出 router.get("/logout",function(req, res) { delete req.session.user; res.end(); }) //获取session router.get("/session",function(req, res) { console.log("user in session"); console.log(req.session.user); res.json({user:req.session.user}); res.end(); }) module.exports = router;
代码很多,不一一解释了,如果以后有空再补回。先说几个点
最后来个展望未来。
文章页我打算用jade渲染整个文章html再返回出来。因为文章嘛,要变的其实也不多,而且用vue的话,个人感觉像评论啊这种小组件用比较好,文章都是静态的,所以先在后端渲染出来直接返回,还不用再请求一遍再渲染。
想了想进度了能力,除了增删改查文章,我觉得我的博客也只能有查看和评论文章的功能,不知道vue哪里能用。。。可能我也还没很好的接触和理解vue毕竟我才学到vur-router。应该大的功能就是做一个简洁版markdown吧