教你十分鍾開發后台管理系統


本文叫你如何輕松配置系統設計的功能架構,讓開發不再困難,剩下的你就可以cv操作了。  

 

01 前言


如無意外,大家最近也應該也是在家里學(閑)習(魚)吧,不過我還是建議一下大家,新的風暴已經出現,怎么能夠停滯不前... 似乎想起了什么。不論如何現在是大四狗最忙碌的時候了,而且大家也應該利用這段時間好好鞏固自己的知識點,爭取在一兩個月內做出一個比較像樣的項目,好給自己的大學一個交代。

不管怎么說,一個好的項目是可以寫在自己的簡歷上面的,一不小心可能你就憑着這個項目拿到滿意的offer。所以本文就給那些還在困惑的孩子們一個導向,希望你們也可以做出一個屬於自己的項目。我深知大家的難處,因為我之前也是苦於這種設計系統的問題,找了多方資料也不怎么理想,所以我覺得分享是對我們程序員最好的回報。

最近我也是在弄相關的事情,奈何導師又給你一個新的需求。還能怎么辦,做唄。這一次我就新增了一個后台管理系統,方便管理人員的操作,折騰了一晚上加一早上,嘗試了幾種方案都不太滿意,現在我就把自己遇到的坑和問題都說出來,為大家填坑。我使用開源的項目vue+element-ui+mysql+node+express的組合。

 

 

 

02 開源管理系統


大家應該對現在的前端框架vue比較熟悉了,基本上如果你是從事前端行業的話是必學的框架之一。推薦這個框架是因為上手比較簡單,對新手比較友好,而且生態完善,每天都有無數的程序員為你排憂解難,這就是生態好的好處。好了廢話不多說,接下來就是推薦兩個比較好的開源項目。

  • vue-element-admin

這是一個比較大型的后台管理系統,包含了很多的東西與功能,如果你是一個新手的話可能hold不住,畢竟他的項目是比較完善的,但好在也有完善的文檔。大家自己可以自由查看,當然你也可以好好研究里面的架構層次是怎么設計的。一般來說你要學習某一項新的技術,查看別人現成的項目是很有幫助的。畢竟人家可是掉了一地的頭發才開發出這么一個偉大的系統,造福大家年輕的程序員。

 

 

 

  • Ant Design Pro

這是一個由螞蟻金服出品的后台管理系統,也是非常不錯的模板項目,可以做到開箱即用,界面美觀,文檔詳細,居家旅行都可以一看。跟前面的一樣,這也是一個龐大的框架,因為也有很多集成的功能,但是大家也可以看一下里面的架構是怎么設計的,相信你會有一個很不錯的收獲。

 

  

 

不過大家千萬不要直接拿來當畢業設計哦,但是說一個比較實在的話,很多高校的講師並不會關注互聯網的發展,也有一些還是教你用jQuery的,想想都覺得可怕。上面提到的模板有老師不知道也是正常。所以同學們一定要關注互聯網的發展,特別是前端,隔三差五更新一個新的技術出來也是正常的。

我相信很多高校也該沒有教你這些東西和技術,也沒有推薦你看一下那個開源項目很不錯,基本上都是c語言、c++、java、jsp等編程語言的入門級學習,好了不扯這個了。

比較好的我就覺得是這兩個了,有一些是結合bootstrap的,大家也可以看一下。不過現在主流的都是使用element-ui和ant-design組件庫,所以我們也順應潮流。

03 從零開始


說是從零開始,但是你也必須要有js基礎,有命令行的基礎,你知道什么是node和npm這些東西。你可以去官網上面先安裝vue,使用他們的腳手架vue-cli搭建一個項目。這個過程比較簡單,你只需要幾個常用的命令就可以實現了。不過這次我使用了github上面的一個開源項目,因為省去了自己配置的步驟(是因為懶)。查看地址

接下來講的就是如何自己寫接口,連接mysql數據庫以及通過前端的調用返回數據,這里就不是假數據了,而是真實存在的數據。

在開始之前,你需要把項目clone下來,執行npm i 安裝一下本身的依賴。

假如你的網不是很好,你可以切換到淘寶的鏡像源地址,只需在命令后面加上--registry= https: //registry.npm.taobao.org即可。國內的相對來說比較快,也不容易出錯,假如你不加的話可能會安裝失敗。示例如下:

npm install --registry=https://registry.npm.taobao.org

然后你還要安裝一下以下依賴:

npm install element-ui --save (回車,這是組件庫)
npm install axios --save (回車,這是請求發送的方法)
npm install mysql --save (回車,數據庫連接)
npm install express --save (回車,便於獲取數據)
npm install body-parser --save (回車,解析響應

然后我們可以在main.js下面把axios添加到vue的原型上面,方便調用。

import axios from 'axios'; Vue.prototype.$axios = axios //全局注冊,使用方法為:this.$axios

 

 

 

04 數據庫


數據庫我們選用的是關系型數據庫mysql,可視化工具是navicat。

首先大家可以看一下剛創建好的項目,我們可以在src目錄下面創建一個文件夾server,這個文件夾用於存放數據庫配置和數據庫連接相關的代碼。

文件夾里面創建幾個文件,分別用於存放配置,連接等相關內容。為什么要分這么多個呢?原因就是我們之前提到的解耦問題,把賣二手手機號碼地圖耦合性降到最低。方便以后修改和更新接口等操作,不然如果你全都寫在一個文件里面就會很繁瑣。

  • api.js 用於配置一些接口,就是你以后調用的接口返回相應的數據庫數據
  • sqlMap.js 用於編寫一些sql語句,就是上面的接口的實際實現過程
  • router.js 接口路由相關
  • index.js 這里就是總的導出文件,就是簡單的http服務

接下來實現每一個文件的編寫

api.js
const mysql = require('mysql'); const sqlMap = require('./sqlMap'); //創建鏈接對象 const pool = mysql.createPool({ host: '47.98.151.134', user: 'root', port: 3306, password: 'Wqs2019..', database: 'design', multipleStatements: true // 多語句查詢 }) module.exports = { getValue(req, res, next) { pool.getConnection((err, connection) => { var sql = sqlMap.getValue; connection.query(sql, (err, result) => { res.json(result); connection.release(); }) }) } }
sqlMap.js
var sqlMap = { getValue: 'SELECT * FROM test;' } module.exports = sqlMap;
router.js
const express = require('express'); const router = express.Router(); const api = require('./api'); router.get('/getValue', (req, res, next) => { api.getValue(req, res, next); }); module.exports = router;
index.js
const routerApi = require('./router'); const bodyParser = require('body-parser'); // post 數據是需要 const express = require('express'); const app = express(); app.use(bodyParser.json()); // 后端api路由 app.use('/api', routerApi); // 監聽端口 app.listen(3000); console.log('success listen at port:3000......');

上面的代碼完善之后你就可以在server的目錄下面執行,node index.js開啟服務,它會監聽3000端口的內容。

 

 

05 前端文件


接下來我們就隨便找一個文件測試一下,我們可以選擇剛剛創建好的helloworld.vue文件測試一下,寫一個點擊事件,然后在methods里面實現請求。

<template> <div> <p @click="go">首頁</p> </div> </template> <script> export default { data() { return {} }, methods: { go() { this.$axios.get('/api/getValue', { params: {} }).then( (res) => { console.log('res', res); }) } } } </script>

如無意外,當你運行vue項目的時候,這是會報錯的。

因為我們剛剛說到你的服務器是監聽3000端口,但是你的vue項目是監聽8080端口,是不通的。所以我們想一下在項目的config目錄下面的index.js文件,里面是可以設置跨域相關的配置,我們只需要把dev下面的proxyTable寫成:

dev: { env: require('./dev.env'), port: process.env.PORT || 8080, autoOpenBrowser: true, assetsSubDirectory: 'static', assetsPublicPath: '/', proxyTable: { '/api': { target: 'http://localhost:3000/api', changeOrigin: true, pathRewrite: { '^/api': '' } } },

這段代碼的意思就是把任何以api開頭的請求都定向到target這個地址下面。所以配置完成之后重新編譯一下,應該就沒有問題了,能夠正確返回數據。我點擊首頁的時候就會發送請求並順利返回數據。

 

 

另外注意的是:

假如你想要請求本地的json數據數據,我發現一定要放在static的目錄下才可以,不然是無法獲取的。不過我們一般也要或者線上的數據,或者連接你本地的數據庫。

 

 

 

06 小結


不得不說,代碼是要經常打的,不然時間久了你就會忘記很多事情,也忘記很多配置啥的。一開始我遇到的坑就是直接調用mysql的時候,發現Net.createConnection is not a function的問題,困擾許久,后來才知道不是mysql的鍋而是在於node本身。你需要起服務才可以訪問數據相關的內容。

在此也推薦大家去看一下node相關的技術,以及express和koa2等,可以方便地搭建后台以及編寫接口,這些都是web框架,詳情大家也可以去官網看一下,也有很多入門級別的教程,值得一學。畢竟現在node已經走進了大家的視野,就像之前那句話說的,是業務成就了人,驅動了你的成長。

好了,本文就說到這里,文章同步發送到微信公眾號《前端小時》,歡迎大家關注,覺得不錯可以點贊收藏轉發。大家加油!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM