└── README.md
/README.md:
--------------------------------------------------------------------------------
1 | ## 简介
2 | ### 基于Vue+Element实现真实后台管理系统
3 | 本教程只是vue全家桶简单的一部分,主要为了在实际开发中快速上手,同时能够快速掌握Vue构建工具。
4 |
5 | 由于本人水平有限,如果有不足或者错误的地方,希望能提出意见和建议。
6 |
7 | 这是鄙人第一个教程,所有您的鼓励对我尤为重要,所有不要吝惜你的star。
8 | ## 环境搭建
9 | 1.安装Node.js,从[node.js官网](https://nodejs.org/zh-cn/)根据自己的需求对应下载并安装,很简单过程不赘述,安装完成之后,打开命令行工具(win+r,然后输入cmd),输入 node -v,如下图,如果出现相应的版本号,则说明安装成功。
10 |
11 | 
12 |
13 | 说明一下官网下载安装node.js后,就已经自带npm(包管理工具)了,另需要注意的是node版本要高于4.0,npm的版本最好是3.x.x以上,以免对后续产生影响。
14 |
15 | 
16 |
17 | 2.安装webpack,打开命令行工具输入:npm install webpack -g,安装完成之后输入 webpack -v,如下图,如果出现相应的版本号,则说明安装成功。
18 | 说明一下,由于很多都是国外的,如果网速比较慢可以安装淘宝镜像(不懂可自行百度)
19 |
20 | 
21 |
22 | 3.安装vue-cli脚手架构建工具,打开命令行工具输入:npm install vue-cli -g,安装完成之后输入 vue -V(注意这里是大写的“V”),如下图,如果出现相应的版本号,则说明安装成功。
23 |
24 | 
25 |
26 | ## 准备工作完成后就可以开始vue-cli项目
27 | 在硬盘上找一个文件夹放工程用的。这里有两种方式指定到相关目录:①cd 目录路径 ②如果以安装git的,在相关目录右键选择Git Bash Here
28 |
29 | 1.vue init webpack vue-system 通过webpack初始化一个项目,根据提示做出相应的选择,个人建议安装vue-router、ESLint(代码规范,建议养成习惯)
30 |
31 | 2.
32 | ```
33 | cd vue-system
34 | npm install
35 | npm run dev
36 | ```
37 |
38 | 
39 |
40 | 3.恭喜你已经成功一大步
41 | ## 配置脚手架
42 |
43 | 1.打开.eslintrc.js文件,在rules下配置
44 | ```
45 | 'eol-last': 0, // 不检测文件末尾有空行
46 | 'space-before-function-paren': 0
47 | ```
48 | 2.如果需要使用scss可
49 | ```
50 | npm install node-sass --save-dev
51 | npm install sass-loader --save-dev
52 | ```
53 | 3.引入Element ui
54 | ```
55 | npm i element-ui -S
56 | ```
57 |
58 | 配置element-ui。
59 |
60 | 在src下的main.js引入element-ui
61 |
62 | ```src/main.js```
63 |
64 | ```
65 | import ElementUI from 'element-ui'
66 | import 'element-ui/lib/theme-chalk/index.css'
67 |
68 | Vue.use(ElementUI)
69 | ```
70 | 4.重置样式
71 | 在src新建common文件夹,放一些公共样式配置等
72 | ```
73 | cd common
74 | mkdir css
75 | touch ./css/reset.css
76 | ```
77 | 在reset.css里面写重置样式
78 | 然后在main.js引入
79 | ```
80 | src/main.js
81 | ```
82 | ```
83 | import './common/css/reset.css'
84 | ```
85 | 先配置这么多,后面面需要什么再根据自己的需求就行配置
86 | ## 从登陆页开始
87 | ### 创建登陆页面
88 |
89 | ```
90 | cd src
91 | mkdir pages
92 | touch ./pages/Login.vue
93 | ```
94 |
95 | ```src/pages/Login.vue```
96 |
97 | ```
98 |
99 |
100 | Login
101 |
102 |
103 | ```
104 |
105 | 注意template下只能有一个根
106 |
107 | 2.配置路由
108 |
109 | 进入src下的App.vue,删除脚手架自带的组件,剩余如下
110 |
111 | ```
112 |
113 |
114 |
115 |
116 |
117 |
118 |
123 | ```
124 |
125 | 然后进入router下的index.js删除多余项剩下
126 |
127 | ```src/router/index.js```
128 | ```
129 | import Vue from 'vue'
130 | import Router from 'vue-router'
131 |
132 | Vue.use(Router)
133 |
134 | export default new Router({
135 | routes: [
136 | ]
137 | })
138 | ```
139 | ok一切准备就绪
140 |
141 | 引入Login组件,然后配置路由
142 |
143 | ```
144 | import Login from '../pages/Login'
145 |
146 | routes: [
147 | {
148 | path: '/',
149 | redirect: '/login'
150 | },
151 | {
152 | path: '/login',
153 | name: 'Login',
154 | component: Login
155 | }
156 | ]
157 | ```
158 |
159 | 然后 ```npm run dev```你会发现浏览器出现Login
160 |
161 | 填充登陆页面
162 |
163 | template部分
164 | ```
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 | 登录
176 |
177 | Tips : 用户名和密码随便填。
178 |
179 |
180 |
181 | ```
182 | script部分
183 | ```
184 |
214 | ```
215 | 样式部分
216 | ```
217 |
241 | ```
242 | 这时浏览器会出现
243 |
244 | 
245 |
246 | ### 开始内容部分
247 | 首先内容区会分成3个部分头部、侧边栏和显示内容区域
248 | 在src下的components建立Header、Home、Slider组件
249 | ```
250 | touch ./src/components/Header.vue
251 | touch ./src/components/Home.vue
252 | touch ./src/components/Slider.vue
253 | ```
254 | 编写Header组件
255 | ```src/components/Header.vue```
256 |
257 | template部分
258 | ```
259 |
260 |
275 |
276 | ```
277 | script部分
278 | ```
279 |
297 | ```
298 | 样式部分
299 | ```
300 |
326 | ```
327 | 2.编写Slider组件
328 | ```src/components/Slider.vue```
329 |
330 | template部分
331 | ```
332 |
333 |
334 |
335 |
359 |
360 |
361 |
362 | ```
363 | script部分
364 | ```
365 |
405 | ```
406 | 说明一下items是想要展示的选项
407 |
408 | 样式部分
409 | ```
410 |
424 | ```
425 | 3.编写Home组件
426 | ```src/components/Home.vue```
427 |
428 | template部分
429 | ```
430 |
431 |
432 |
433 |
434 |
435 |
436 |
437 |
438 |
439 |
440 |
441 | ```
442 | script部分
443 | ```
444 |
453 | ```
454 | 样式部分
455 | ```
456 |
472 | ```
473 | 配置路由
474 | ```
475 | import Home from '../components/Home'
476 | {
477 | path: '/home',
478 | name: 'Home',
479 | component: Home
480 | }
481 | ```
482 | 重启服务然后登陆
483 |
484 | 你会发现
485 |
486 | 
487 |
488 | ### 新建各个选项页面
489 | ```src/pages```
490 | ```
491 | mkdir Base
492 | mkdir Introduction
493 | mkdir Axios
494 | touch ./pages/Base/Base.vue
495 | touch ./pages/Introduction/Introduction.vue
496 | touch ./pages/Axios/Axios.vue
497 | ```
498 | 配置路由
499 | ```src/router/index.js```
500 | ```
501 | import Introduction from '../pages/Introduction/Introduction'
502 | import Base from '../pages/Base/Base'
503 | import Axios from '../pages/Axios/Axios'
504 | ```
505 | ```
506 | routes: [
507 | {
508 | path: '/',
509 | redirect: '/login'
510 | },
511 | {
512 | path: '/login',
513 | name: 'Login',
514 | component: Login
515 | },
516 | {
517 | path: '/home',
518 | name: 'Home',
519 | component: Home,
520 | children: [
521 | {
522 | path: '/',
523 | name: 'Introduction',
524 | component: Introduction
525 | },
526 | {
527 | path: '/base',
528 | name: 'Base',
529 | component: Base
530 | },
531 | {
532 | path: '/axios',
533 | name: 'Axios',
534 | component: Axios
535 | }
536 | ]
537 | }
538 | ]
539 | ```
540 | 配置完成。可以在各个页面填写内容
541 |
542 | 其他就不赘述了,想要什么功能,直接去element-ui拷贝
543 |
544 | 下面主要说明一下Axios
545 |
546 | 1.安装axios
547 |
548 | ```npm install axios```
549 |
550 | 一般数据请求这块,会统一做个封装
551 |
552 | 在src新建api文件夹,然后分别建index.js、confing.js
553 | ```
554 | mkdir api
555 | touch ./api/index.js
556 | touch ./api/config.js
557 | ```
558 | 配置axios
559 |
560 | ```src/api/config.js```
561 | ```
562 | import axios from 'axios'
563 | import qs from 'qs' // POST传参序列化
564 | axios.defaults.timeout = 5000
565 | // axios.defaults.headers.post['Content-Type'] = 'application/x-www=form-urlencoded'
566 |
567 | export default {
568 | fetchGet(url, params) {
569 | return new Promise((resolve, reject) => {
570 | axios.get(url, params).then(res => {
571 | resolve(res.data)
572 | }).catch(error => {
573 | reject(error)
574 | })
575 | })
576 | },
577 | fetchPost(url, data = {}) {
578 | return new Promise((resolve, reject) => {
579 | axios.post(url, qs.stringify(data)).then(res => {
580 | resolve(res.data)
581 | }).catch(error => {
582 | reject(error)
583 | })
584 | })
585 | }
586 | }
587 | ```
588 | 2.如果请求一个接口怎么办?
589 |
590 | 以下是在qq音乐上随便找的一个接口
591 |
592 | 因为存在跨域,这里用代理解决,
593 |
594 | 打开根目录下的fonfig/index配置一下proxyTable
595 | ```
596 | proxyTable: {
597 | '/api': {
598 | target: 'https://c.y.qq.com',
599 | changeOrigin: true,
600 | pathRewrite: {
601 | '^/api': ''
602 | }
603 | }
604 | }
605 | ```
606 | 3.打开src下的api/index.js
607 |
608 | ```src/api/index.js```
609 | ```
610 | import http from './config'
611 | export const getList = (params) => {
612 | return http.fetchPost('/api/v8/fcg-bin/v8.fcg', params)
613 | }
614 | ```
615 | 4.请求数据
616 |
617 | 打开Axios文件
618 |
619 | ```src/pages/Axios/Axios.vue```
620 | ```
621 |
622 |
623 |
624 |
625 |
626 |
661 |
666 | ```
667 | 点一下看看控制台。
668 |
669 | OK!基础教程到此结束,如果对你有些许帮助,请不要吝惜你的star
--------------------------------------------------------------------------------