為了數(shù)據(jù)庫課設(shè),打算后臺用node搭建,前臺用vue搞個博客出來(因為前段時間在學(xué)啊)。本來node不想用框架,喜歡先打好基礎(chǔ)的,奈何3個星期要把他做完和應(yīng)付各種考試,所以最后還是用了express,大大簡化我的學(xué)習(xí)成本。
數(shù)據(jù)庫我選了比較“正式”的MySQL,代碼方面這個比MongoDB復(fù)雜一些。而且這是數(shù)據(jù)庫課設(shè),如果用mongodb老師肯定讓我掛了,因為沒有涉及到設(shè)置主鍵、外鍵等。
先在主入口js引入登錄注冊業(yè)務(wù)js和發(fā)起一個監(jiān)聽端口
var express = require('express');var user = require('./controll/user'); var app = new express();app.use(express.static('public')); //靜態(tài)資源的入口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秒后跳轉(zhuǎn)到首頁"); 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("登錄名已經(jīng)有人用") } } }) })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();})//獲取sessionrouter.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;代碼很多,不一一解釋了,如果以后有空再補(bǔ)回。先說幾個點
最后來個展望未來。
文章頁我打算用jade渲染整個文章html再返回出來。因為文章嘛,要變的其實也不多,而且用vue的話,個人感覺像評論啊這種小組件用比較好,文章都是靜態(tài)的,所以先在后端渲染出來直接返回,還不用再請求一遍再渲染。
想了想進(jìn)度了能力,除了增刪改查文章,我覺得我的博客也只能有查看和評論文章的功能,不知道vue哪里能用。。。可能我也還沒很好的接觸和理解vue畢竟我才學(xué)到vur-router。應(yīng)該大的功能就是做一個簡潔版markdown吧
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。
新聞熱點
疑難解答