從零開始搭建django前後端分離專案 系列一(技術選型)
前言
最近公司要求基於公司的hadoop平臺做一個關於電信行動網路的資料分析平臺,整個專案需求大體分為四大功能模組:資料探勘分析、報表資料查詢、GIS地理化展示、任務監控管理。由於頁面功能較複雜,所以採用前後端分離方式開發。前端採用webpack+vue+vue-router+axios技術棧,後端用django進行開發。從搭建到上線,整個專案前前後後花了差不多一個月時間,中途也遇到一些問題,不過還好都解決了。由於是個人專案,所以我打算把原始碼貢獻出來大家一起討論學習。
原始碼
關於技術選型
由於頁面互動較多,所以整個專案採用前後端分離方式開發。使用Vue.js作為前端框架,代替Django本身較為孱弱的模板引擎,Django則作為服務端提供api介面,使得前後端實現完全分離,更適合單頁應用的開發構建。
使用框架
前端:
webpack + vue + axios + element-ui + iview + zui + jquery
後端:
django + celery
資料庫:
mysql + redis
資料分析:
impala + pandas + sklearn
專案目錄
前端
後端
實現的功能
1、檔案上傳預覽
2、非同步任務執行
3、websocket實現實時進度
4、表格分頁
5、excel檔案動態匯出
6、pandas資料分析
7、impala大資料實時查詢分析
8、KMeans、DBSCAN聚類分析
9、距離計算演算法優化
10、GIS地圖展示
11、websocket實現實時進度和動態渲染
12、百度地圖批量經緯度轉換(服務端實現)
13、歷史資料流式查詢,解決資料量過大問題
14、樹元件懶載入,改善使用者體驗
15、excel檔案流式匯出
16、celery非同步任務監控管理,websocket實時監控
17、django後臺管理
18、專案部署nginx+uwsgi+django+centos7.5
效果圖:
檔案上傳前進行資料核查和預覽
非同步任務執行和實時進度
表格分頁
海量點聚類分析和GIS展示
歷史資料流式查詢和樹節點懶載入
非同步任務實時監控和管理