不少前端小夥伴都嘗試着使用vue
構建前端項目時,使用的數據都是假數據
,可是註冊登陸功能很難使用假數據進行測試,這篇文章就手把手教你如何使用node
作後端,mysql
作數據庫實現登陸註冊功能。本文基於vue-cli入門(四)——vue-resource登陸註冊實現和Vue+MySQL+Express小試牛刀進行拓展。javascript
對於沒有接觸過數據庫的小夥伴,我推薦下載XAMPP
這個比較輕量級,簡單易用。具體步驟以下html
輸入如下命令:前端
use test;
create table user( id int not null primary key auto_increment, username varchar(100) not null, password varchar(100) not null )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Admin
,你會發如今test下有個user表,這樣你就已經建好數據庫了在根文件夾下新建一個server文件,
文件結構如圖vue
|-- build |-- config |-- node_modules |-- server |-- api |-- userApi.js |-- db.js |-- index.js |-- sqlMap.js |-- src |-- static |-- .babelrc |-- .editorconfig |-- .gitignore |-- index.html |-- package.json |-- README.md
db.js
----用來添加mysql配置和index.js
----Express服務器入口文件都不須要更改
原代碼java
sqlMap.js----SQL語句映射文件,以供api邏輯調用node
var sqlMap = { user: { add: 'insert into user( username, password) values ( ?, ?)', select_name: 'SELECT * from user where username = ?', //查詢 username select_password: 'SELECT * from user where password = ?' //查詢 password } } module.exports = sqlMap;
api/userApi.js ---- 測試用api示例mysql
var models = require('../db'); var express = require('express'); var router = express.Router(); var mysql = require('mysql'); var $sql = require('../sqlMap'); // 鏈接數據庫 var conn = mysql.createConnection(models.mysql); conn.connect(); var jsonWrite = function(res, ret) { if(typeof ret === 'undefined') { res.send('err') } else { //res.json(ret); res.send('ok') } }; // 增長用戶接口 router.post('/addUser', (req, res) => { var sql_name = $sql.user.select_name var sql = $sql.user.add; var params = req.body; console.log(params); conn.query(sql_name,params.username,function(err,result) { if(err) { console.log(err) } if(result[0]===undefined) { conn.query(sql,[params.username,params.password], function(err, result) { if(err) { console.log(err) } if(result) { jsonWrite(res, result) } }) }else { res.send('-1') //當前註冊username與數據庫重複時,data返回-1 } }) }); //查找用戶接口 router.post('/selectUser', (req,res) => { var sql_name = $sql.user.select_name; var sql_password = $sql.user.select_password; var params = req.body; conn.query(sql_name,params.username,function(err, result) { if(err) { console.log(err) } if(result[0]===undefined) { res.send('-1') //查詢不出username,data返回-1 }else { conn.query(sql_password,params.password, function(err, result) { if(err) { console.log(err) } if(result[0]===undefined) { res.send('0') //username正確後,password錯誤,data返回 0 }else { jsonWrite(res, result); } }) } }) }); module.exports = router;
Vue-cli login-vue註冊功能修改git
register(){ if(this.newUsername == "" || this.newage == ""){ alert("請輸入用戶名或密碼") }else{ let data = {'username':this.newUsername,'age':this.newage} this.$http.post('/api/user/addUser',data).then((res)=>{ console.log(res) /*接口的傳值是(-1,該用戶已存在)*/ if(res.data == -1) { this.tishi = "該帳號已存在" this.showTishi = true this.username = '' this.age = '' } else if(res.status == 200){ this.tishi = "註冊成功" this.showTishi = true this.username = '' this.age = '' /*註冊成功以後再跳回登陸頁*/ setTimeout(function(){ this.showRegister = false this.showLogin = true this.showTishi = false }.bind(this),2000) } }) } }
原代碼是正確的。
可是我本身就是代理不成功,google了一下也沒有解決辦法,
返回看評論能夠發現他們也同樣,可是若是你仔細讀評論,就能夠找到解決辦法:須要啓動express服務器github
2017/10/31補充:
使用第三方接口時,別人設置跨域限制時,須要利用 反向代理
推薦 npm http-proxy-middleware
在工做場景中,通常是 先後端分離,後端給接口完成註冊登陸功能
仿拉勾網移動端頁面
因此得坑都填完了,本文僅適用於前端沒有接觸後端的小夥伴。
當你讀到這裏的時候而且本身嘗試着作了以後,恭喜你已經入門全棧了。
最後,再次感謝海島心hey
和yuanyuanispeak
sql
代碼庫更新:添加HTTPS環境支持
如何在5分鐘內讓HTTPS在本地開發環境中運行
具體代碼參見commit
⚠️若是不想搭建https環境請刪除指定commit代碼