ElementUI+前后端分离+mockjs

1 前后端分离(理解)

1.1 什么是前后端分离

前端: 将浏览器中为用户进行页面展示的部分称之为前端

后端: 为前端提供业务逻辑和数据准备的所有代码统称为后端

在传统的web应用开发中,大多数的程序员会将浏览器作为前后端的分界线。将浏览器中为用户进行页面展示的部分称之为前端,而将运行在服务器,为前端提供业务逻辑和数据准备的所有代码统称为后端。

很多人误以为前后端分离只是一种web应用开发模式,只要在web应用的开发期进行了前后端开发工作的分工就是前后端分离。 //前后端分工

其实前后端分离并不只是开发模式,而是web应用的一种架构模式。在开发阶段,前后端工程师约定好数据交互接口,实现并行开发和测试;在运行阶段前后端分离模式需要对web应用进行分离部署前后端之前使用HTTP或者其他协议进行交互请求。然而作为一种架构模式,我们在实施的过程中主要对以下四个方面来进行比较和重新认识。

1.2 前后端分离理解

  1. 交互模式 — restful

在这里插入图片描述

  1. 代码层次 —代码仓库

    半分离

    前后端共用一个代码库,但是代码分别存放在两个工程中。后端不关心或很少 关心前端元素的输出情况,前端不能独立进行开发和测试,项目中缺乏前后端 交互的测试用例。

    真分离

    前后端代码库分离,前端代码中有可以进行Mock测试(通过构造虚拟测试对 象以简化测试环境的方法)的伪后端,能支持前端的独立开发和测试。而后端 代码中除了功能实现外,还有着详细的测试用例,以保证API的可用性,降低 集成风险。

在这里插入图片描述

  1. 开发模式–人员分配

在这里插入图片描述

1.3 前后端分离好处

  1. 为优质产品打造精益团队 ----- 专业的人做专业的事情

    通过将开发团队前后端分离化,让前后端工程师只需要专注于前端或后端的开发工作,是的前后端工程师实现自治,培养其独特的技术特性,然后构建出一个全栈式的精益开发团队。

  2. 提升开发效率

    前后端分离以后,可以实现前后端代码的解耦,只要前后端沟通约定好应用所需接口以及接口参数,便可以开始并行开发,无需等待对方的开发工作结束。与此同时,即使需求发生变更,只要接口与数据格式不变,后端开发人员就不需要修改代码,只要前端进行变动即可。如此一来整个应用的开发效率必然会有质的提升。

  3. 完美应对复杂多变的前端需求

    如果开发团队能完成前后端分离的转型,打造优秀的前后端团队,开发独立化,让开发人员做到专注专精,开发能力必然会有所提升,能够完美应对各种复杂多变的前端需求。

  4. 增强代码可维护性

    前后端分离后,应用的代码不再是前后端混合,只有在运行期才会有调用依赖关系。

搭建脚手架工程

步骤 和之前的步骤一样 详情请参考 Vue第二天

Elementui

官网:https://element.eleme.cn/#/zh-CN

1 安装

使用npm方式:npm i element-ui -S

2 使用

在main.js中写入以前内容

import Vue from 'vue';
import ElementUI from 'element-ui'; //引入核心js组件
import 'element-ui/lib/theme-chalk/index.css';//引入依赖的样式

Vue.use(ElementUI)

以上代码便完成了 Element 的引入。需要注意的是,样式文件需要单独引入。

index.js

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Layout from '@/components/01_layout'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    },
    {
      path: '/layout',
      name: 'layout',
      component: Layout
    }
  ]
})

3 elementui组件:

请参照elementui官网

mockjs(了解)

为什么需要模拟数据?

​ 主要针对前端人员 , 前端没有后台的数据,需要模拟进行测试

什么是mock.js

Mock.js (官网http://mockjs.com/)是一款模拟数据生成器,旨在帮助前端攻城师独立

于后端进行开发,帮助编写单元测试。提供了以下模拟功能:

根据数据模板生成模拟数据

模拟 Ajax 请求,生成并返回模拟数据

基于 HTML 模板生成模拟数据

使用mockjs

安装

npm install mockjs

测试:

创建一个js文件

var data = Mock.mock({
  name: {
    first: '@FIRST',
    middle: '@FIRST',
    last: '@LAST',
    full: '@first @middle @last',
    email:'@email',
    ip:'@ip'
  }
})
// 输出结果
console.log(JSON.stringify(data, null, 4))

运行 node demo(文件名)

mockjs流程

在这里插入图片描述

Ajax请求优化 – axios请求

axios类似 ajax ,封装promise(异步请求)

使用axios

安装

npm install axios --save

注意:需要引入的文件

import axios from 'axios'
import userMock from '../userMock'
//配置axios的全局基本路径 t
axios.defaults.baseURL=''
//全局属性配置,在任意组件内可以使用this.$http获取axios对象
Vue.prototype.$http = axios

crud.vue (掌握)

<template>
  <div>
    <el-table
      :data="users"
      style="width: 100%">
      <el-table-column
        prop="createTime"
        label="日期"
        width="180">
      </el-table-column>
      <el-table-column
        prop="name"
        label="姓名"
        width="180">
      </el-table-column>
      <el-table-column
        prop="address"
        label="地址">
      </el-table-column>
      <el-table-column
        prop="email"
        label="邮件">
      </el-table-column>
      <el-table-column
        prop="phone"
        label="电话">
      </el-table-column>
    </el-table>
    <el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="10" :total="total" style="float:right;">
    </el-pagination>
  </div>
</template>

<script>
  export default {
    data(){
      return {
        users:[],
        total:100,
        page:1
      }
    },
    methods: {
      handleCurrentChange(val){
        //page当前页
        this.page =  val;
        //发送请求查询
        this.getUsers();
      },
      getUsers(){
        //发送请求 获取数据 axios
        /*  axios.get('/getUser').then(res=>{

          })*/
        let params = {
          page:this.page
        }
        //发送请求  controller {data:[],total:100}
        this.$http.post('/user/list',params).then(res=>{
          console.log(res);
          this.users =  res.data.data;
          this.total = res.data.total;
        })
      }

    },
    mounted(){
      //页面加载完之后 执行该方法
      this.getUsers();
    }
  }
</script>

发布了54 篇原创文章 · 获赞 9 · 访问量 868

猜你喜欢

转载自blog.csdn.net/qq_40629521/article/details/103798696
今日推荐