分页

不要在网站上无限滚动!

蹲街弑〆低调 提交于 2019-11-28 03:00:31
人们在浏览网站的时候是喜欢用“无限滚动”,还是喜欢点击“阅读更多”或“查看更多”?无限滚动消除了分页的需要——分页是将数字内容分离到不同页面的过程。但这种方式真的好吗? 作者 | Monish reddy 译者 | 风车云马 ,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 以下为译文: 下面是我对无限滚动的看法,说明为什么它会导致不良后果。 对于某些用户来说,无限滚动会带来压力。对那些习惯查看页脚选项卡的人来说,无休止的滚动活动不仅会令人恼火,还可能带来压力。 你知道卷轴吧?几百年前它就被使用了。无线滚动类似于卷轴,很多网页右边有滚动条,但是无限滚动条不会告诉你何时停止。相对而言,分页可以使浏览大块内容变得很容易。 如果你想在建设和开发网站中使用无限滚动,以下从技术、美学和功能等10个方面建议你不要这样做: 性能问题 随着无限滚动,您将把越来越多的内容加载到内存中。这直接影响了网页性能,因为浏览器要比通常打开页面做更多的工作,客户端需要不断监听与滚动相关的调用。即使这个问题可以解决,但需要花费大量的时间,还不如投入到其他事情上。 页脚被掩盖了 在一个无限滚动的网站中很难发现页脚,但是用户有时候需要访问页脚。一般网站底部会设置页脚,其中包含联系方式、关于我们的信息、隐私政策等信息。如果采用无限滚动的话,可以使用一个粘性页脚,但不选择无限滚动将在更大程度上取悦用户。

rails2.3.XX中使用will_paginate分页插件,并实现Ajax分页

好久不见. 提交于 2019-11-28 02:15:02
早在rails1.XX中,分页插件是内置的辅助方法,但进入rails2后,该方法已经被废除,改成插件的形式使用。 我使用的环境是winxp + ruby1.8.7 + rails 2.3.14。(抱怨一下下:win下开发rails是一件灰常灰常灰常痛苦的事情,T.T) 安装 will_paginate插件有两种安装方式: 一种是作为gem安装,gem install mislav-will_paginate,安装成功后在environment.rb文件中加上 config.gem 'mislav-will_paginate','2.3.15' 后面的2.3.15是安装的版本,自己看一下什么版本写上就ok; 另外一种安装方式是作为插件安装: 在https://github.com/mislav/will_paginate/tags中友各种版本的will_paginate插件,下载的时候要看好了,如果像我这样使用rails2的就不要下载最新的,那是rails3下使用的。下载下来后解压到vendor/plugins中,重命名为will_paginate就OK啦! 使用 在controller中将原来的 @products = Product.all 替换为 @products = Product.paginate(:page=>params[:page],:per_page=>3)

我用Python告诉你,充气娃娃什么感觉,呜呜呜

我怕爱的太早我们不能终老 提交于 2019-11-28 01:35:48
一、需求背景 在实际开发过程中,在我们动手开发之前,都是由产品经理为我们(测试、前端、后端、项目经理等)先讲解一下需求,我们了解了需求之后,才开始一起来讨论技术方案。 我们自己实现一些小功能时同样需要讨论需求,也就是告诉别人我们为什么要做这个东西?或者我们想利用这款产品解决什么问题。 我们常常看到一些有关充气娃娃的表情包和图片或新闻,但是这种东西很少会像一些小视频一些相互交流,大家可能都是偷摸玩耍。所以老王我相信其实大部分同学并没有亲身体验过充气娃娃到底是什么感觉(包括我自己),所以老王很好奇究竟是什么一种体验?真的如传言中那样爽吗? 二、功能描述 基于很多人没有体验过充气娃娃是什么感觉,但是又很好奇,所以希望通过 爬虫+数据分析 的方式直观而真实的告诉大家(下图为成品图)。 三、技术方案 为了实现上面的需求以及功能,我们来讨论下具体的技术实现方案: 分析某东评论数据请求 使用requests库抓取某东的充气娃娃评论 使用词云做数据展示 四、技术实现 上篇文章中就给大家说过,今天我们以某东商品编号为: 1263013576 的商品为对象,进行数据分析,我们来看看详细的技术实现步骤吧! 本教程只为学习交流,不得用于商用获利,后果自负! 如有侵权或者对任何公司或个人造成不利影响,请告知删除 1.分析并获取评论接口的URL 第一步:打开某东的商品页,搜索你想研究的商品。 第二步

drf分页

南楼画角 提交于 2019-11-28 00:53:36
drf之分页 注意 只有在使用通用视图或视图集时,才会自动执行分页。如果您使用常规 APIView,则需要自己调用分页 API 以确保返回分页响应。有关示例,请参阅 mixins.ListModelMixin 和 generics.GenericAPIView 类的源代码。 设置分页样式 #在django全局配置文件中设置 REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination', 'PAGE_SIZE': 100 } ''' 需要同时设置分页类和应使用的页面大小。默认情况下,DEFAULT_PAGINATION_CLASS 和 PAGE_SIZE 都是 None。 您还可以通过使用 pagination_class 属性在单个视图上设置分页类。通常,您希望在整个 API 中使用相同的分页样式,尽管您可能希望在每个视图的基础上更改分页的各个方面,例如默认或最大页大小。 ''' 修改分页样式 class StandardResultsSetPagination(PageNumberPagination): page_size = 100 # 每页显示的数量 page_query_param = 'page' # 接口中选页码的字段名 - 一般不做修改

mysql和oracle分页语句

老子叫甜甜 提交于 2019-11-28 00:49:12
分页是常见的提高查询效率的方法,因此熟练掌握不同数据库的分页语句很重要 mysql的分页如下 select * from table_name where 1= 1 limit start,end * 最好换成需要查询的字段,不要用 * start 页数 (从0开始计算) end 每页条数 oracle 的分页如下 select * from (select tmp_tb.*,ROWNUM row_id from ( select * from table_name ) tmp_tb where ROWNUM<= (start+pageSize) ) where row_id> start start 页数 (从1开始计算) pageSize 每页条数 来源: https://blog.csdn.net/V_ashon/article/details/99853777

海量数据的分页怎么破

大城市里の小女人 提交于 2019-11-28 00:39:28
  一、背景   分页应该是极为常见的数据展现方式了,一般在数据集较大而无法在单个页面中呈现时会采用分页的方法。   各种前端UI组件在实现上也都会支持分页的功能,而数据交互呈现所相应的后端系统、数据库都对数据查询的分页提供了良好的支持。   以几个流行的数据库为例:   查询表 t_data 第 2 页的数据(假定每页 5 条)   MySQL 的做法:   select * from t_data limit 5,5   PostGreSQL 的做法:   select * from t_data limit 5 offset 5   MongoDB 的做法:   db.t_data.find().limit(5).skip(5);   尽管每种数据库的语法不尽相同,通过一些开发框架封装的接口,我们可以不需要熟悉这些差异。如 SpringData 提供的分页接口:   public interface PagingAndSortingRepository<t, serializable="" extends="">   extends CrudRepository<t,> {   Page findAll(Pageable pageable);   }   这样看来,开发一个分页的查询功能是非常简单的。   然而万事皆不可能尽全尽美,尽管上述的数据库

Mysql order by与limit混用陷阱

痴心易碎 提交于 2019-11-27 23:56:20
在Mysql中我们常常用order by来进行排序,使用limit来进行分页,当需要先排序后分页时我们往往使用类似的写法select * from 表名 order by 排序字段 limt M,N。但是这种写法却隐藏着较深的使用陷阱。在排序字段有数据重复的情况下,会很容易出现排序结果与预期不一致的问题。 比如现在有一张user表,表结构及数据如下: 现在想根据创建时间升序查询user表,并且分页查询,每页2条,那很容易写出sql为:select * from user order by create_time limit pageNo,2; 在执行查询过程中会发现: 1、查询第一页数据时: 2、查询第四页数据时: user表共有8条数据,有4页数据,但是实际查询过程中第一页与第四页竟然出现了相同的数据。 这是什么情况?难道上面的分页SQL不是先将两个表关联查询出来,然后再排好序,再取对应分页的数据吗??? 上面的实际执行结果已经证明现实与想像往往是有差距的,实际SQL执行时并不是按照上述方式执行的。这里其实是Mysql会对Limit做优化,具体优化方式见官方文档:https://dev.mysql.com/doc/refman/5.7/en/limit-optimization.html 这个是5.7版本的说明,提取几个问题直接相关的点做下说明。

Mybatis plus 入门学习

空扰寡人 提交于 2019-11-27 23:22:24
首先介绍一下Mybatis pius mybatis plus绝对非常好用,比mybatis generator还好用,虽然mybatis逆向工程单表增删改查能够自动生成,不过我觉得它生成的动态sql和一些QueryVo之类的实用效果不是很优秀。而mybatis plus只需继承,Dao继承BaseMapper<T>,Service继承IService<T>,Service实现类继承ServiceImpl<DAO,T>并实现Service,然后在src/main/resource下只需保留一个mybatis放置的xml文件即可,里面什么resultMap都不需要写,除非特殊的需求。 简介 Mybatis-Plus (简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 特性 无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis-Plus 不会对您现有的 Mybatis 构架产生任何影响,而且 MP 支持所有 Mybatis 原生的特性 依赖少:仅仅依赖 Mybatis 以及 Mybatis-Spring 损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作 预防Sql注入:内置Sql注入剥离器,有效预防Sql注入攻击 通用CRUD操作

Django rest framework 之分页

大憨熊 提交于 2019-11-27 22:16:36
Django rest_framework 中分页可分为三类: PageNumberPagination:看第 n 页,每页显示 n 条数据 LimitOffsetPagination:在 n 个位置,向后查看 n 条数据 CursorPagination:加密分页,只能看上一页和下一页 一、PageNumberPagination 在这里将采用 rest_framework 内置的页面渲染器 Response 。 1、 api/serializers.py class PagesSerializers(serializers.ModelSerializer): """分页""" class Meta: model = models.Role fields = '__all__' 2、 api/views.py from rest_framework.response import Response # 渲染器 from .serializers import PagesSerializers from app import models from rest_framework.pagination import PageNumberPagination class PageView(APIView): """分页""" def get(self, request, *args,