1.先后端分离:先后端各自在独立的服务器运行,只约定好数据交互的接口,经过restful风格进行先后端交互css
a) 为何要进行先后端分离:前端
i. 效率高,术业有专攻,打造精益的团队,完成前端复杂多变的需求,代码的维护性比较好,vue
b) 安装vue脚手架
安装vue脚手架:npm install –g vue-cli
初始化webpack:vue init webpack
运行vue: npm run devwebpack
c) 安装前端UI框架:ElementUI
npm install element-ui –S
在main.js里面导入ElementUI的支持
import ElementUI from 'element-ui'; //引入核心js组件
import 'element-ui/lib/theme-chalk/index.css';//引入依赖的样式
Vue.use(ElementUI)
自定义组件;改吧改吧
在路由(route/index.js)里面引用咱们写的页面ios
d) ElementUI(快速网站成型工具)web
i. elementUI 的各类组件ajax
e) mock.js前端模拟数据(生成随机数据,拦截Ajax请求)vue-cli
i. 安装mock.js:npm install mockjsnpm
ii. Mock.js基本入门模拟数据element-ui
f) Axios对Ajax请求的优化
i. 下载安装:npm install axios –save
ii. 使用:
a) 先安装模拟后台数据的mockjs(npm install mockjs)和和模拟ajax请求的axios(npm install axios –save) b) 定义一个usermock.js模拟生成后台数据
import Mock from 'mockjs' // 引入mock
var dataList = [];
//生成15条数据放入数组里面
for (var i = 0; i < 15; i++) {
dataList.push(Mock.mock({
'id': '@increment',
'name': '@cname',
'phone': /^1[0-9]{10}$/,
'email': '@email',
'address': '@county(true)',
'createTime': '@date("yyyy-MM-dd")'
}))
}
//
function pagination(index, size, list) {
console.log(list);
console.log(index, size);
return list.slice((index-1)*size, index*size)
}
//模拟请求
// 获取用户列表
Mock.mock(new RegExp('/user/info'), 'post', (opts) => {
var list =dataList;
console.log(opts.body);
var index = JSON.parse(opts.body).page;
var size = 10;
var total = list.length;
list = pagination(index, size, list);
return {
'total': total,
'data': list
}
});
c) 前台页面(user.vue)书写
<template>
<div>
<!--工具条-->
<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
<el-form :inline="true">
<el-form-item>
<el-input placeholder="关键字"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary">查询</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary">新增</el-button>
</el-form-item>
</el-form>
</el-col>
<!--:data="users"表格的数据-->
<el-table
:data="users" //后台数据
border
height="450px"
style="width: 100%">
<el-table-column
prop="name"
label="姓名"
width="180">
</el-table-column>
<el-table-column
prop="address"
label="地址">
</el-table-column>
<el-table-column
prop="phone"
label="电话"
width="180">
</el-table-column>
<el-table-column
prop="email"
label="邮箱"
width="180">
</el-table-column>
<el-table-column
prop="createTime"
label="建立时间"
width="180">
</el-table-column>
<el-table-column
fixed="right"
label="操做"
width="100">
<template slot-scope="scope">
<el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>
<el-button type="text" size="small">编辑</el-button>
</template>
</el-table-column>
</el-table>
<!--分页标签-->
<!--@current-change="handleCurrentChange"调用方法获取分页的users-->
<el-pagination
background
layout="prev, pager, next"
:total="total"
:page-size="10"
@current-change="handleCurrentChange"
style="float:right"
>
</el-pagination>
</div>
</template>
<script>
//引用axios发送请求
import axios from 'axios';
//表格数据的获取源,属性
export default {
data() {
return {
total:0,
page:1,
users: []
}
},
methods:{
handleCurrentChange(currentPage){
//当前页数赋值给page这个字段
this.page = currentPage;
this.getUsers();
},
//获取Uuser数据的方法
getUsers(){
//json的格式传递过去
//传入分页参数进行分页显示
let params = {
page:this.page
};
// 发送请求获取mock模拟数据 function(data){} 发送后台 http://localhost:80/user/info
//baseURL+/user/info
// axios.post('/user/info',params).then(result=>{
this.$http.post('/user/info',params).then(result=>{
this.total = result.data.total;
this.users = result.data.data;
})
}
},
//方法挂载
mounted(){
this.getUsers();
}
}
</script>
d) 在路由包下的index.js页面引入user页面和浏览器访问的路径
e) 在main.js引入mock模拟生成的后台数据axios等核心文件
import App from './App'
import router from './router'
import Vue from 'vue';
import ElementUI from 'element-ui'; //引入核心js组件
import 'element-ui/lib/theme-chalk/index.css';//引入依赖的样式
//引入模板生成的数据
import './js/userMock'
import axios from 'axios'
//配置axios的全局基本路径
axios.defaults.baseURL='http://localhost:80'
//全局属性配置,在任意组件内能够使用this.$http获取axios对象
//原型 axios.post -->this.$http
Vue.prototype.$http = axios
Vue.use(ElementUI)
Vue.config.productionTip = false
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
});
a) Easy Mock 是杭州大搜车无线团队出品的一个极其简单、高效、可视化、而且能快
速生成模拟数据的在线 mock 服务 。以项目管理的方式组织 Mock List,能帮助咱们更好的管理 Mock 数据。
b) 初始设置
c) 登陆注册
i. 浏览器打开https://www.easy-mock.com 输出用户名和密码,若是不存在会自动注册。注意:请牢记密码,系统没有找回密码功能! --
ii. 新建项目,建立接口
iii. 启动前端项目,项目里面不要引用项目的mock.js