• SSM+ElementUI综合练习(第一天)


    1.前后端分离:前后端各自在独立的服务器运行,只约定好数据交互的接口,通过restful风格进行前后端交互

    a)       为什么要进行前后端分离:

          i.            效率高,术业有专攻,打造精益的团队,完成前端复杂多变的需求,代码的维护性比较好,

    b)       安装vue脚手架
    安装vue脚手架:npm install –g vue-cli
    初始化webpack:vue init webpack
    运行vue: npm run dev

    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)里面引用我们写的页面

    d)       ElementUI(快速网站成型工具)

          i.            elementUI 的各种组件

    e)       mock.js前端模拟数据(生成随机数据,拦截Ajax请求)

          i.            安装mock.js:npm install mockjs

          ii.            Mock.js基本入门模拟数据

    f)        Axios对Ajax请求的优化

        i.            下载安装:npm install axios –save

       ii.            使用:

    1. 在<script>里面引入import axios from ‘axios’
    2. 定义方法获取数据
      methods:{
        getUser(){
          定义获取数据时的参数
          var params = {page:1}
          发送axios请求
          axios.post(‘/user/info‘,params).then(data=>{
           console.log(data)
           })
         }
      }
      //挂载方法,钩子方法
      mounted(){
        this.getUser();
      }
    3. 前台页面模拟后台数据展示

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

    1. EasyMock

        a)       Easy Mock 是杭州大搜车无线团队出品的一个极其简单、高效、可视化、并且能快

          速生成模拟数据的在线 mock 服务 。以项目管理的方式组织 Mock List,能帮助我们更好的管理 Mock 数据。    

        b)       初始设置

        c)        登录注册

                         i.            浏览器打开https://www.easy-mock.com 输出用户名和密码,如果不存在会自动注册。注意:请牢记密码,系统没有找回密码功能! --

                       ii.            新建项目,创建接口

                      iii.            启动前端项目,项目里面不要引用项目的mock.js

  • 相关阅读:
    GrapeCity Documents (服务端文档API组件) V3.0 正式发布
    js 手机号码正则表达式
    springMvc 注解@JsonFormat 日期格式化
    solr java代码
    solr全文检索
    在阿里云服务器CentOS7安装mysql提示“No package mysql-server available上安装mysql遇到的问题
    MockBean 单元测试
    redis缓存
    c3p0连接池
    springboot Transactional事务的使用
  • 原文地址:https://www.cnblogs.com/8888-lhb/p/11417531.html
Copyright © 2020-2023  润新知