zoukankan      html  css  js  c++  java
  • 谈谈面试时遇到的uniapp框架的问题?

    1、我告诉面试官,我写的是app项目,用的是uni-app框架,面试官反问我是H5?我说不是 ,就是app,面试官又说uniapp不就是H5,我当时还一愣一愣的,后来我查了一下,确实可以说uniapp是H5,虽然官网没有这么介绍,但是开发的uniapp项目相当于是H5页面,只是装在了Android壳子中,其实开发的还是页面。另外,uniapp是可以跨平台使用,可以发布在app平台、H5平台和小程序平台,可参考以下图:

     2、请说一下在uniapp开发中下拉刷新、上拉加载的原理?

    (1)下拉刷新:

            原理:大部分的下拉刷新控件,都是用contentInset实现的。默认情况下,如果一个UIScrollView的左上角在导航栏的正下方,那么它的contentInset是64,而contentOffset是-64。继续下拉的话,contentOffset就会越来越小,如果上滑,contentOffset就会增大,直到左上角达到屏幕的左上角时,contentOffset刚好为0。

    默认情况下,如果下拉一个UIScrollView,在松手之后,会弹回初始的位置(导航栏下方)。而大部分的下拉刷新控件,都是将自己放在UIScrollView的上方,起始y设置成负数,所以平时不会显示出来,只有下拉的时候才会出现,放开又会弹回去。然后在loading的时候,临时把contentInset增大,相当于把UIScrollView往下挤,于是下拉刷新的控件就会显示出来,然后刷新完成之后,再把contentInset改回原来的值,实现回弹的效果。

      问题:采用下拉刷新获取数据列表,请求完最后一页的数据后,不小心又进行了一次下拉操作,相当于又重新请求了一次,为了避免这种重复请求的现象,有什么方法?

      答:可以通过uni.startPullDownRefresh(),在onLoad中(即页面刚加载进来时)调用该API实现开始下拉功能;在下拉刷新函数中,调用后台接口获取每一页的数据,将每次获取的数据列表累加起来,直到请求到最后一页数据后,调用uni.stopPullDownRefresh(),关闭下拉刷新,这时,即便再次下拉,也不会请求到接口数据了。

    (2)上拉加载:

      原理:

    • 滚定区域是给固定高度, 设置overflow-y:auto来实现
    • 触发条件:可视高度 + 滚动高度 >= 实际高度
      • 可视高度:通过dom的offsetHeight获取, 表示区域固定的高度; 但是更加推荐使用getBoundingClientRect()来获取高度, 因为使用前者会引起浏览器回流, 造成一些性能问题
      • 滚动高度:滚动事件中通过e.target.scrollTop获取, 表示滚动条距离顶部的px
      • 实际高度:通过dom的scrollHeight获取, 表示区域内所有内容的高度(包括滚定距离), 也就是实际的高度

      问题与回答同上。

  • 相关阅读:
    TLS,SSL,HTTPS with Python(转)
    编码(转)
    python获取shell输出(转)
    python 线程安全
    Sublime Text3 运行python(转)
    KVM和QEMU的关系(转载)
    全虚拟化和半虚拟化(转)
    VMWare Workstation和VMWare vSphere(转)
    /etc/cron.d添加定时任务脚本后不生效
    Linux -- 部分命令
  • 原文地址:https://www.cnblogs.com/heisetianshi/p/14769250.html
Copyright © 2011-2022 走看看