zoukankan      html  css  js  c++  java
  • vue-element-admin中table分页改为前台处理

    vue-element-admin中table分页原理:根据currentPage与pageSize去后台精准查询,返回匹配的结果,然后前台currentPage与pageSize变化时,再去后台获取相应的结果值。这样的优点:前台存储的资源少,压力小。缺点:后端不断接收请求的次数多。

    我优化了一下,不能说优化,改造了一下,增加了另一种分页机制,后台全部获取数据,前台通过computed得到table要展示的data。这种优点:当currentPage与pageSize变化时,不会去后台请求数据,前台根据vue的特性,数据双向绑定,computed中自动计算应该展示的data。

    改造内容:

    1、原mock.js中filter部分,即下面这句话去掉。

       //const pageList = mockList.filter((item, index) => index < limit * page && index >= limit * (page - 1))//这种只把请求页返给前台
    2、前台vue部分处理,computed增加currentPageList(),在这个方法中将1中的计算逻辑加入
      currentPageList() {
          var limitC = this.listQuery.limit
          var pageC = this.listQuery.page
          console.log("computed currentPageList this.list", this.list);
          if (this.list == null || this.list == undefined) {
          console.log("enter computed currentPageList(),但是还没有数据created(),等待。。。");
          return null;
       }
      return this.list.filter((item, index) => index < limitC * pageC && index >= limitC * (pageC - 1))
      }
    3、前台vue部分 table绑定改为 
           :data="currentPageList"
    4、增加新的分页模版paginationNoRequestBack'
           import Pagination from '@/components/paginationNoRequestBack'
         paginationNoRequestBack这个模版与pagination大同小异,只是将里面的this.$emit('pagination')去掉了。
    5、前台vue部分 模版pagination调用里面去掉@pagination事件。
     
    目前项目中就存在了两种分页请求方式,在以后的使用中根据各自的优缺点,选取最优的方式即可。
    当然新加的这种方式也可称作‘假分页’。
     
    真分页 和  假分页,真分页是不会去取所有数据的,假分页虽然也达到了分页效果,数据量少还好说,在未来数据量大的时候,接口性能就降低了。所以还是看具体的业务场景。
    “真分页”显然是效率更高,面对庞大的数据量也能够从容自若,但是缺点便是每次都需要和后台交互。“假分页”不需要和后台交互,但是一旦面对大数据量时,加载将十分缓慢,影响用户的体验。
    因此个人认为数据量不是很大时,可以考虑使用假分页,这种只与数据库请求一次。
    补充点分页SQL原理,参考:https://www.cnblogs.com/sunliyuan/p/5804355.html
     
     
  • 相关阅读:
    Use 'mysqld --thread_stack=#' to specify a bigger stack.
    Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax;
    interface interface com.alibaba.dubbo.common.compiler.Compiler, class line com.alibaba.dubbo.common.compiler.support.JavassistCompiler) in
    javax.servlet.http.HttpServlet was not found on the Java Build Path
    js_jquery单机事件不起作用
    JavaScript 执行环境及作用域
    闭包的使用场景
    YUI css reset
    比较经典的数组去重和数组排序
    css 响应式布局
  • 原文地址:https://www.cnblogs.com/lixianfu5005/p/9967200.html
Copyright © 2011-2022 走看看