本文叫你如何轻松配置系统设计的功能架构,让开发不再困难,剩下的你就可以cv操作了。  

 

教你十分钟开发后台管理系统_数据




01 前言



如无意外,大家最近也应该也是在家里学(闲)习(鱼)吧,不过我还是建议一下大家,新的风暴已经出现,怎么能够停滞不前... 似乎想起了什么。不论如何现在是大四狗最忙碌的时候了,而且大家也应该利用这段时间好好巩固自己的知识点,争取在一两个月内做出一个比较像样的项目,好给自己的大学一个交代。

不管怎么说,一个好的项目是可以写在自己的简历上面的,一不小心可能你就凭着这个项目拿到满意的offer。所以本文就给那些还在困惑的孩子们一个导向,希望你们也可以做出一个属于自己的项目。我深知大家的难处,因为我之前也是苦于这种设计系统的问题,找了多方资料也不怎么理想,所以我觉得分享是对我们程序员最好的回报。

最近我也是在弄相关的事情,奈何导师又给你一个新的需求。还能怎么办,做呗。这一次我就新增了一个后台管理系统,方便管理人员的操作,折腾了一晚上加一早上,尝试了几种方案都不太满意,现在我就把自己遇到的坑和问题都说出来,为大家填坑。我使用开源的项目vue+element-ui+mysql+node+express的组合。

 

教你十分钟开发后台管理系统_ios_02

 

 

02 开源管理系统



大家应该对现在的前端框架vue比较熟悉了,基本上如果你是从事前端行业的话是必学的框架之一。推荐这个框架是因为上手比较简单,对新手比较友好,而且生态完善,每天都有无数的程序员为你排忧解难,这就是生态好的好处。好了废话不多说,接下来就是推荐两个比较好的开源项目。

  • vue-element-admin

这是一个比较大型的后台管理系统,包含了很多的东西与功能,如果你是一个新手的话可能hold不住,毕竟他的项目是比较完善的,但好在也有完善的文档。大家自己可以自由查看,当然你也可以好好研究里面的架构层次是怎么设计的。一般来说你要学习某一项新的技术,查看别人现成的项目是很有帮助的。毕竟人家可是掉了一地的头发才开发出这么一个伟大的系统,造福大家年轻的程序员。

 

 

教你十分钟开发后台管理系统_ios_03

 

  • Ant Design Pro

这是一个由蚂蚁金服出品的后台管理系统,也是非常不错的模板项目,可以做到开箱即用,界面美观,文档详细,居家旅行都可以一看。跟前面的一样,这也是一个庞大的框架,因为也有很多集成的功能,但是大家也可以看一下里面的架构是怎么设计的,相信你会有一个很不错的收获。

 

教你十分钟开发后台管理系统_数据_04  

 

不过大家千万不要直接拿来当毕业设计哦,但是说一个比较实在的话,很多高校的讲师并不会关注互联网的发展,也有一些还是教你用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


 

教你十分钟开发后台管理系统_ios_05

 

 

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端口的内容。

 

教你十分钟开发后台管理系统_数据_06

 

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);
})
}
}
}
</