先來貼一竄代碼讓大家理解前端/后端/數據庫的工作原理,
首先簡要說明:前端向后端請求數據,后端根據前端請求數據的類別分析其需求,並連接到數據庫獲取相應數據:
來一段簡單的實例代碼模擬淘寶商城:
前端代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
<script src="js/socket.io.js" type="text/javascript" charset="utf-8"></script>
<script src="js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
<div class="conList">
<div class="content" v-for='item in contentList'>
<h3>{{item[1]}}</h3>
<img :src="item[2]"/>
<p>價格:{{item[3]}}</p>
<p>數量:{{item[4]}}</p>
</div>
</div>
</div>
<script type="text/javascript">
//連接到本地服務器
var socket=io('http://localhost:7444')
var app=new Vue({
el:'#app',
data:{
contentList:[],
},
mounted:function(){
//數據加載后向后台請求數據,請求數據名稱為getContentList
socket.emit('message','getContentList')
}
})
//監聽后端返回的數據
socket.on('reply',function(data){
//如果返回數據類型為contentList則做如下操作
if (data.type=='getContentList'){
app.contentList=data.data
}
// console.log('data',data.data)
})
</script>
</body>
</html>
后端socketio框架服務器:
import socketio import eventlet import random import pymysql # 實例化socketio對象 sio=socketio.Server() @sio.on('connect') def connect(sid,environ): print('environ123',environ) # 監聽前端傳入的請求數據 # 根據請求數據連接數據庫獲取目標數據 @sio.on('message') def message(sid,data): print('message',data) if data=='getContentList': # 連接數據庫 db=pymysql.connect('localhost','root','123456','python1') # 使用 cursor() 方法創建一個游標對象 cursor cursor=db.cursor() #mysql語句 sql='select item_id,item_title,item_image,item_price,num from tb_cart;' # 執行sql語句 cursor.execute(sql) # 獲取所有游標 data1=cursor.fetchall() # 因為data1為元組,到傳到前端只能讀取到一條信息,所以要轉成列表 data=list(data1) # 給前端返回數據標名數據類型,前端好區分需求數據 content={'type':'getContentList','data':data} print(data,'12311111') # 將整理好的數據返回到前端 sio.emit('reply',content)
@sio.on('disconnect') def disconnect(sid): print('disconnect123',sid) if __name__=='__main__': # sio通過middleware轉為應用服務 app=socketio.Middleware(sio) # 依賴eventlet網關服務器 eventlet.wsgi.server(eventlet.listen(('',7444)),app)
