自動化腳手架工具:vue-cli、webpack-cli和定製化腳手架工具開發。javascript
中間層:
保持先後端分離的前提下,使用node搭建Web Server簡易服務器,用來作頁面的服務端渲染和數據接口的合併。css
靈活運用node輔助項目架構:
好比使用node作cache緩存。html
全棧開發:
使用node作小型的商業項目、我的博客的全棧。vue
mysql官網下載安裝MySQL Server。安裝好後,登錄mysql,看mysql是否鏈接成功,以下圖所示: java
create DATABASE user;
use user;
create table userlist(
id int primary key auto_increment,
username char(30) unique,
password char(30)
);
複製代碼
insert into userlist values(1,'zhangsan','123456');
複製代碼
執行插入SQL語句後,userlist表中有以下數據: node
node項目中使用npm先安裝mysql工具包:mysql
npm install mysql --save
複製代碼
建立server.js,用mysql包鏈接mysql:jquery
const mysql = require('mysql');
// 創建數據庫鏈接池
const pool = mysql.createPool({
host: '127.0.0.1',
port: '3306',
user: 'root',
password: 'root123456',
database: 'user'
})
複製代碼
client端: 建立index.htmlwebpack
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登陸</title>
<script src="https://cdn.bootcss.com/jquery/2.2.1/jquery.js"></script>
</head>
<body>
<input type="text" id="username"/>
<input type="password" id="password"/>
<button id="login">登陸</button>
<script type="text/javascript">
$('#login').click(function(){
$.ajax({
type: 'POST',
url: '/login',
dataType: 'json',
data: JSON.stringify({
username: $('#username').val(),
password: $('#password').val()
}),
success: function (data) {
if(data.success) {
window.location.href = '/welcome';
}else{
alert('帳號密碼錯誤')
}
}
});
})
</script>
</body>
</html>
複製代碼
server端:web
// server.js
const fs = require('fs');
const express = require('express');
const app = express();
const { query } = require('./query-db');
app.get('/', function(req, res) {
let file = fs.readFileSync('./index.html');
let _data = file.toString();
res.setHeader('Content-type','text/html;charset=UTF-8')
res.send(_data);
})
app.post('/login', function(req, res) {
let reqData = "";
res.setHeader('Content-type','text/json;charset=UTF-8')
req.on('data', function(data){
reqData += data
});
req.on('end', async function(){
let dataOb = JSON.parse(reqData);
let word = "select * from userlist where username='";
word += dataOb.username + "'";
word += " and password='";
word += dataOb.password + "'";
let result = await query(word);
if(result && result.length > 0) {
// 若是要在express裏面使用session需安裝express-session
res.setHeader('Set-Cookie', 'username='+result[0].username)
res.send(JSON.stringify({
success: true,
message: '登陸成功!'
}))
}else{
res.send(JSON.stringify({
success: false,
message: '登陸失敗!'
}))
}
})
})
app.get('/welcome', function(req, res) {
res.send('Login success!')
})
app.listen(3000);
複製代碼
// query-db.js
const mysql = require('mysql');
const pool = mysql.createPool({
host: '127.0.0.1',
port: '3306',
user: 'root',
password: 'root123456',
database: 'user'
})
let query = function(sql) {
return new Promise((resolve, reject) => {
pool.query(sql, function(error, result, fields){
if (error) throw error;
resolve(result);
})
})
}
module.exports = { query };
複製代碼
登陸功能結果圖: