Vue2.0全家桶 & Express Mysql開發(fā)簡(jiǎn)單后臺(tái)管理系統(tǒng)(流量預(yù)警,內(nèi)有g(shù)if)

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


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

技術(shù)棧在經(jīng)過考慮后決定使用如下,后端采用Express做RESTful API開發(fā),Mysql作為數(shù)據(jù)存儲(chǔ),至于為什么不采用mongodb,因?yàn)槠渲泻芏嚓P(guān)聯(lián)數(shù)據(jù)表,問過一些有經(jīng)驗(yàn)的后臺(tái),mongodb在處理關(guān)系型數(shù)據(jù)上并不是太合適,Redis作為SESSION存儲(chǔ)。

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


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

前端采用Vue全家桶這個(gè)大家太熟了,簡(jiǎn)單列一下吧

前端:Vue全家桶

Vue.js

Vue-Cli

Vue-Resource

Vue-Router

Vuex

Element UI

后端:Node

Express

Mysql

Redis


整體思路:

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

Node服務(wù)端只用來接收前端通過ajax發(fā)送的請(qǐng)求,查詢數(shù)據(jù)庫(kù)并返回值

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

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


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,雖然這樣會(huì)引入bootstrap和jquery,但是目前來看如果是這種需求確實(shí)沒有比較好/現(xiàn)成的解決方案,vue的一些富文本插件都有一些功能不全和bug,所以綜合考慮還是使用summernote。

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

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判斷后臺(tái)傳回的數(shù)據(jù),(我在后臺(tái)設(shè)置一個(gè)字段),如果0則為否,1則為是,這樣只要判斷參數(shù)便可以設(shè)置該影片是否被禁用,以及解除禁用的操作,這無疑讓我們體驗(yàn)到 ‘?dāng)?shù)據(jù)驅(qū)動(dòng)視圖’的靈魂,大大提高開發(fā)效率。

目前完成功能

輪播圖增刪改查

視頻,視頻分類增刪改查

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

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

用戶上傳頭像,改名等。


待完成

用戶權(quán)限劃分

視頻評(píng)論增刪改查

話題評(píng)論增刪改查

我也不知道,精彩待續(xù)?


項(xiàng)目運(yùn)行

DEMO

因?yàn)樯洗畏帕藴y(cè)試賬號(hào)被人增加了一些奇怪的東西,這個(gè)就暫時(shí)不做公開demo了,有需要的去github看源碼吧

項(xiàng)目地址:https://github.com/dubinbin/videoBackEnd

因?yàn)樾聎ebpack的proxytable我弄了后一直不能轉(zhuǎn)發(fā)成功,所以我用的是之前的webpack版本,如果有哪位大神有解決方案,請(qǐng)賜教,我把谷歌,stackoverflow都翻了一遍也沒有好的解決方案。


因?yàn)橐恍┰?不想做,懶),表單并沒有做輸入驗(yàn)證,有需要可以參考如下文章

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

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


后記

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

當(dāng)然初次做這種前后端聯(lián)調(diào)項(xiàng)目,不免很多代碼寫的不夠漂亮和高效復(fù)用,api也可能不是做的很好,還需要不斷學(xué)習(xí)。

在這個(gè)項(xiàng)目中不僅學(xué)習(xí)了后端express,restful api的開發(fā),同時(shí)也加強(qiáng)了我對(duì)vue組件化開發(fā)的學(xué)習(xí),router,resource,vuex等全家桶的配合使用,在這個(gè)過程中收獲甚廣,我深知做一個(gè)項(xiàng)目是不夠充實(shí)自身知識(shí)棧的,前端/計(jì)算機(jī)行業(yè)需要終身學(xué)習(xí)的熱情,且學(xué)且行吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容