zoukankan      html  css  js  c++  java
  • 小程序开发-9-Behavior行为与加入缓存系统优化流行页面

    Behavior行为与加入缓存系统优化流行页面

    触碰区域优化

    • 设计师切图切大点,多余部分变成透明色
    • 前端将可触碰区域变大

    解决向左箭头变灰,向右变灰

    禁用事件的技巧

    产生一个向左的事件,但是在nav组件里面忽略

    组件自身判断是否是第一期,自身禁用向左的按钮

    music组件初步实现

    完成页面布局

    初识组件的Behavior行为

    创建组件共同行为,行为与组件的定义很相似

    let behaviro = Behaviro({
     properties:{
         img: String,
         conent:String
     }
    });
    export {behaviro};
    

    三个组件都引用behavior

    import {behaviro} from '../classic-beh.js'
    Component({
     behaviors:[classicBeh],
     data:{},
     method:{},
     ...
    })
    

    behavior继承与多继承的覆盖原则

    同名变量覆盖的问题

    • 子类覆盖父类,即组件里面的属性值会覆盖behavior里面的属性值
    • 数组越靠后的behavior会覆盖靠前的behavior
    behaviors:[b1,b2,b3] //即b3会覆盖b2,b2会覆盖b1
    

    注意:生命周期函数不会发生覆盖,即先执行behaviors里面的周期,后执行组件里面的周期


    实现最新期刊和第一期期刊的判断逻辑

    在classic model中实现第一期期刊的判断逻辑

    //是否是第一期
    isFirst(index){
     return index === 1? true:false;
    }
    

    实现最新期刊的判断逻辑

    • 获取最新期刊的index,并存入缓存中
    //获取最新一期期刊
    getLatest(cb){
     this.request({
         url:'classic/latest',
         success: (res)=>{
             cb(res);
             this._setLatestIndex(res.index);
         }
     })
    }
    //将数据存入缓存中
    _setLatestIndex(index){
     wx.setStorageSync('latest',index);
    }
    //从缓存中读取数据
    _getLatestIndex(){
     return wx.getStrageSync('latest');
    }
    
    //是否最新期刊数据
    isLatest(index){
    let latestIndex = this._getLatestIndex();
    return latestIndex === index?true:false;
    }
    

    实现期刊切换

    wxml 里面的代码

    <wzh-nav class="nav" title="{{classic.title}}" first="{{first}}" latest="{{latest}}" bind:left="onNext" bind:right="onPrevious"/>
    

    js里面的代码

    onNext(){
     this._updateClassic('next');
    }
    onPrevious(){
     this._updateClassic('previous');
    }
    _updateClassic(previousOrNext){
     let index = this.data.classic.index;
     classicModel.getClassic(index,previousOrNext,(res)=>{
         this.setData({
             classic: res,
             latest: classicModel.isLatest(res.index);
             first: classicModel.isFirst(res.index);
         });
     });
    }
    

    classicModel里面的代码

    //获得上或下一期数据
    getClassic(index,previousOrNext,cb){
     this.request({
         url: `/classic/${index}/${previousOrNext}`,
         success: (res) => {
           cb(res)
         }
       })
    }
    

    加入缓存提升用户体验

    思路:先从缓存中寻找或者API写入缓存中

  • 相关阅读:
    CocoaPods使用详细说明
    cocoapod使用
    Android-利用LinearGradient实现文字一闪一闪
    Android5.0 CheckBox颜色修改
    android实现文字渐变效果和歌词进度的效果
    Ceph 常规操作笔记
    Git版本控制器使用总结性梳理
    CentOS 7.5 部署 MySQL 5.7 基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL) 环境- 运维笔记 (完整版)
    Ansible-playbook 运维笔记
    Docker容器基础介绍
  • 原文地址:https://www.cnblogs.com/TomAndJerry/p/10490182.html
Copyright © 2011-2022 走看看