Vue2.0全家桶 & Express Mysql開發簡單后臺管理系統(流量預警,內有gif)

這張圖用來做封面,好看而已~


年后那段時間看了黃軼老師出的餓了么高仿單頁應用后一直想自己動手開發Vue2.0單頁應用(不得不說拿著vue2.0跟著那個1.0教程學是非常蛋疼的事情,踩了很多坑),恰逢這學期有Node.js課程,于是乎,課程設計什么的,一拍即合,當然在做著項目的同時也遇到很多坑,也有很多巧妙解決的地方,于是在這個項目快要結束之際,我想寫這篇文章記錄,并總結,注意本文并不是介紹怎么做的教學文,只是一些節點的分析和總結。

技術棧在經過考慮后決定使用如下,后端采用Express做RESTful API開發,Mysql作為數據存儲,至于為什么不采用mongodb,因為其中很多關聯數據表,問過一些有經驗的后臺,mongodb在處理關系型數據上并不是太合適,Redis作為SESSION存儲。

所以這樣我用了2個js文件就把后端搞定了。一個定義api,一個做express,mysql,redis連接相關信息。


后臺管理界面樣式方面采用Element UI(以下簡稱eleui)作為UI層框架,不得不說Eleui的文檔非常完善,各種回調方法,參數都非常完善和易懂,樣式美觀方面也跟外面那些妖艷的賤貨不一樣。作為一個前端菜鳥,我都能看著文檔api擼出一個應用。

前端采用Vue全家桶這個大家太熟了,簡單列一下吧

前端:Vue全家桶

Vue.js

Vue-Cli

Vue-Resource

Vue-Router

Vuex

Element UI

后端:Node

Express

Mysql

Redis


整體思路:

Node服務端不做路由切換,這部分交給Vue-Router完成

Node服務端只用來接收前端通過ajax發送的請求,查詢數據庫并返回值

所以這樣做前后端幾乎完全解耦,只要約定好restful數據接口,前端渲染后端返回的數據就ok了。

例如,這里要使用/api/movelist的api取數據庫movie表里數據,這里我采用了左聯的方式,將movie表中fid等于movieCategory fid的數據篩選出來,這樣,我們就能取到movie表的電影,并且還可以得到它屬于哪個分類。


router.get('/api/movielist',function(req, res){

connection.query('SELECT movie.id,movie.Mname,movie.PicUrl,movie.showTime,movie.movieUrl,movie.moviePlayTime,movie.enable, movieCategory.name FROM movie LEFT OUTER JOIN movieCategory ON movie.fid = movieCategory.fid order by movie.id ',function(err,doc){

? ? ? if(err) {

? ? ? ? ?console.log(err)

? ? ? ?}elseif(doc) {

? ? ? ? ? res.json({

? ? ? ? ? ? errno:0,

? ? ? ? ? ?data:doc

? ? ?})

? ? ?}

? ?})

})

富文本編輯器summernote


在富文本選擇上,選擇了summernote,雖然這樣會引入bootstrap和jquery,但是目前來看如果是這種需求確實沒有比較好/現成的解決方案,vue的一些富文本插件都有一些功能不全和bug,所以綜合考慮還是使用summernote。

summernote需要你在webpack中把jquery加入alias以便全局調用,使用時在mounted周期聲明如下。callback里的onImageUpload作為圖片上傳成功的回調,你可以在此將圖片傳到服務器獲取相對地址并返回到編輯器中,注意這里有個坑,你需要給express中設置上傳目錄為可訪問的靜態資源目錄。(當初被坑慘了,一直空白 /手動捂臉)

mounted(){

? ? $('#summernote').summernote({

? ? ? ? ?lang:'zh-CN',

? ? ? ? ?height:300,

? ? ? ? minHeight:null,

? ? ? ? maxHeight:null,

? ? ? ? focus:true,

toolbar:[

? ? ? ? ?['style',['bold','italic','clear']],

? ? ? ? ['fontsize',['fontsize']],

? ? ? ? ['para',['ul','ol','paragraph']],

? ? ? ? ?['insert',['picture','link','video']]

],

? ? ?callbacks:{

? ? ? ? onImageUpload:function(files){

? ? ? ? var ?data=new FormData();

? ? ? ? Picdata.append('upload',files[0]);


? ? ? ? $.ajax({

? ? ? ? ? ? url:'/api/uploadEditorPic',

? ? ? ? ? ?type:'POST',

? ? ? ? ? ?cache:false,

? ? ? ? ? ?data:data,

? ? ? ? ? ?processData:false,

? ? ? ? ? ?contentType:false

? ? ? ? ?}).success(function(res) {

? ? ? ? ? ?$('#summernote').summernote("insertImage",res);

? ? ? ? ? ?}).fail(function(res) {

? ? ? ? ? ? ? console.log('error')

? ? ? ? });

? ? ?}?

? ?}

?})

},


部分功能演示(gif)


在視頻管理這里,我們可以用v-if判斷后臺傳回的數據,(我在后臺設置一個字段),如果0則為否,1則為是,這樣只要判斷參數便可以設置該影片是否被禁用,以及解除禁用的操作,這無疑讓我們體驗到 ‘數據驅動視圖’的靈魂,大大提高開發效率。

目前完成功能

輪播圖增刪改查

視頻,視頻分類增刪改查

話題,話題分類的增刪改查(富文本)

用戶的簡單操作(封禁,解封)

用戶上傳頭像,改名等。


待完成

用戶權限劃分

視頻評論增刪改查

話題評論增刪改查

我也不知道,精彩待續?


項目運行

DEMO

因為上次放了測試賬號被人增加了一些奇怪的東西,這個就暫時不做公開demo了,有需要的去github看源碼吧

項目地址:https://github.com/dubinbin/videoBackEnd

因為新webpack的proxytable我弄了后一直不能轉發成功,所以我用的是之前的webpack版本,如果有哪位大神有解決方案,請賜教,我把谷歌,stackoverflow都翻了一遍也沒有好的解決方案。


因為一些原因(不想做,懶),表單并沒有做輸入驗證,有需要可以參考如下文章

http://blog.csdn.net/github_26672553/article/details/53541055

由于(不會)的原因,也沒有用mocha等做測試,純自測/滑稽,所以這只能算一個練手的作品吧~


后記

作為一名業余前端,在真正開發后端的時候才明白原來平常那些應用簡單操作在服務端來做要考慮情況更多。例如用戶未登陸去往后臺頁面如何分辨并返回(使用session進行判斷),改一張輪播圖需要先請求后臺刪除原有圖片再替換新圖片的邏輯操作。刪一個分類要同時把該分類關聯的另一張表的數據刪除。

當然初次做這種前后端聯調項目,不免很多代碼寫的不夠漂亮和高效復用,api也可能不是做的很好,還需要不斷學習。

在這個項目中不僅學習了后端express,restful api的開發,同時也加強了我對vue組件化開發的學習,router,resource,vuex等全家桶的配合使用,在這個過程中收獲甚廣,我深知做一個項目是不夠充實自身知識棧的,前端/計算機行業需要終身學習的熱情,且學且行吧。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,182評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,489評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,290評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,776評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,510評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,866評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,860評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,036評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,585評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,331評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,536評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,058評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,754評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,154評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,469評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,273評論 3 399
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,505評論 2 379

推薦閱讀更多精彩內容

  • Address:https://www.zybuluo.com/XiangZhou/note/208532 Exp...
    天蠍蒗漫閱讀 11,361評論 2 55
  • 之前讀《孟子》的時候,就覺得齊宣王有點“虎”。 “寡人有疾,寡人好色,寡人有疾,寡人好勇,寡人有疾,寡人好貨。” ...
    東方國學閱讀 420評論 0 1
  • 文|般若芙殤 那個少年還沒過二十歲的生日,一個人獨自躺在冰冷的棺木里,消瘦的臉龐很難令人聯想到曾經的笑容來,卻一眼...
    李詩民閱讀 2,041評論 26 32
  • 今天沒有晚自習,坐在辦公室等小飛來的空檔,打開朋友圈,看到各式各樣的:小雪養生之類的話。兒子半小時后來了,回家騎自...
    李乙飛媽閱讀 270評論 0 1
  • 我滴媽呀 糟心的一年終于過去了,也真的想不到有什么收獲,朋友 對象 技能 錢,簡直一樣也沒有。 到現在,我常常做一...
    Nicidddy閱讀 280評論 0 0