# 后台管理系统 **Repository Path**: qinghuaguan/background_management_system ## Basic Information - **Project Name**: 后台管理系统 - **Description**: No description available - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-08-17 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 后台管理系统 #### 项目介绍 接口地址:`[http://47.96.21.88:8082/](http://47.96.21.88:8082/)` #### 软件架构 软件架构说明:本项目使用vue框架,写的一个后台管理系统 #### 使用说明 ### **项目开始之前,**先安装npm 将taobao作为镜像文件,切换到到cnpm,步骤如下: ``` 前提 node.js中已经包含了npm,需要检测npm安装好了没有 0. npm -v 0.1 npm install npm -g 升级npm 1. npm i nrm -g 2. nrm ls 3. nrm use taobao||cnpm 4. cnpm i nodemon -g 5. 检测 nodemon -v 如果没有cnpm 安装npm i cnpm -g 安装了nodemon 启动文件的方式:nodemon index.js ``` ### **项目开始预备** ##### vue-cli脚手架工具 > vue-cli是官方的一个脚手架工具,所谓脚手架就是一个架子,项目结构的架子,它里面包含一些最基本的脚本结构设置。利用vue-cli,我们可以生成这样的一个脚手架,所以就被成为脚手架工具。 1. `npm install vue-cli -g` 下载全局脚手架 2. `vue init webpack vue_admin` 使用脚手架初始化webpack项目 ​ `注意`在初始化过程中,除了vue-router输入y之外其余的 一律是n 3. `cd vue_admin`进入初始化项目 4. `npm run dev`运行vue项目 不能自动打开浏览器的解决方法如下: - 进入`vue_admin/config/index.js`文件,修改dev中的`autoOpenBrowser: true`即可,下次在启动就可以自动在浏览器中打开了 也可以手动复制链接在浏览器中打开: - 手动在浏览器中输入网址`http://localhost:8080/#/` ​ `npm run build`打包命令文件默认在`vue_admin/dist`目录,默认只能复制dist目录的文件到服务器中运行,不能双击以file形式打开,解决方式如下: ​ 进入`vue_admin/config/index.js`文件,修改build中的`assetsPublicPath路径`./` ``` // assetsPublicPath: '/', // 默认 assetsPublicPath: './', // 修改为 ``` ### **element-ui** [http://element-cn.eleme.io/#/zh-CN/component/installation](http://element-cn.eleme.io/#/zh-CN/component/installation) 1. `npm i element-ui -S`npm 安装 2. 在main.js配置使用 ``` import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' import App from './App' import router from './router' Vue.use(ElementUI) ``` #### 初始化项目 1. `npm i node-sass sass-loader -D`下载scss依赖包 2. 在main.js中引入index.scss ``` import '@/styles/index.scss' ``` ### `less-loader`处理less文件 > 解析处理文件后缀名为.less的文件 ``` // 1. 安装less less-loader npm i less less-loader --save-dev // 2. 在webpack.config.js中的moudle节点中配置解析规则 module:{ rules:[ { test:/\.less$/, use:['style-loader','css-loader','less-loader'] } ] } ``` ## 项目start #### 登录页面 在index.less中引入字体文件`@import './icon.less';` login.html 模板三部曲:template+script+styles template ```
``` script ``` data () { return { form: { username: '', password: '' } } } ``` css样式 ``` .login { position: fixed; width: 100%; height: 100%; background-color: #2f4050; .container { position: absolute; left: 0; right: 0; width: 400px; padding: 0px 40px 15px 40px; margin: 200px auto; background: white; .avatar { position: relative; left: 50%; width: 120px; height: 120px; margin-left: -60px; margin-top: -60px; box-sizing: border-box; border-radius: 50%; border: 10px solid #fff; box-shadow: 0 1px 5px #ccc; overflow: hidden; } .login-btn { width: 100%; } } } ``` #### 登陆页面表单验证 在form表单上绑定规则`` 把将要验证的选项添加prop属性 ``` ``` 配置验证规则 ``` return { form: { username: '', password: '' }, rules: { username: [ { required: true, message: '请输入用户名', trigger: 'blur' } ], password: [ { required: true, message: '请输入密码', trigger: 'blur' } ] } } ``` #### 登陆功能简单完成 1.npm i axios -S 下载axios 2.创建`src/api/index.js`配置请求 ``` import axios from 'axios' const baseURL = 'http://localhost:8888/api/private/v1/' axios.defaults.baseURL = baseURL // 登录验证 export const checkUser = params => { return axios.post('login', params).then(res => res.data) } ``` 3.Login.vue文件中使用 ``` // 3.1 导入checkUser方法 import {checkUser} from '@/api/index.js' // 3.2 checkUser(this.form).then(res => { // 如果成功要跳转至首页, 将token保存到localStorage if (res.meta.status === 200) { this.$router.push({name: 'Home'}) } else { // 如果失败,展示提示信息 this.$message({ type: 'error', message: res.meta.msg }) } }) ``` 4.配置路由 ``` // 4.1 引入组件 import Home from '@/views/Home' // 4.2 配置路由 routes: [ { path: '/login', name: 'Login', component: Login }, { path: '/', name: 'Home', component: Home, redirect: {path: 'welcome'}, children: [ { name: 'Welcome', path: 'welcome', component: Welcome } ] } ] ``` #### axios拦截器 拦截器的作用:主要是将没有token值链接跳转拦截在外面,增加安全性 1.将请求回来的token保存到本地 --在login.vue请求成功后,将token保存在本地 ``` localStorage.setItem('mytoken', res.data.token) ``` 2.添加axios请求拦截器 ``` // 添加请求拦截器 axios.interceptors.request.use(function (config) { // 将token给到一个前后台约定好的key中,作为请求发送 let token = localStorage.getItem('mytoken') if (token) { config.headers['Authorization'] = token } return config }, function (error) { // Do something with request error return Promise.reject(error) }) ``` #### 路由导航守卫 [路由导航守卫]( https://router.vuejs.org/zh/guide/advanced/navigation-guards.html) ``` router.beforeEach((to, from, next) => { let token = localStorage.getItem('mytoken') // 如果已经登录,那我不干涉你,让你随便访问 if (token) { next() } else { if (to.path !== '/login') { // 如果没有登录,但你访问其他需要登录的页面,那我就让你跳到登录页面去 next({path: '/login'}) } else { // 如果没有登录,但你访问的login,那就不干涉你,让你访问 next() } } }) ``` #### 参与贡献 1. Fork 本项目 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)