• 小程序开发-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写入缓存中

  • 相关阅读:
    query_posts函数使用方法小结|wordpress技巧
    查看服务器被访问最大的ip
    Escape character is ‘^]’什么意思?怎么使用telnet
    telnet安装和使用教程
    开启了wpjam以后网站语言不能设置英文的解决方法
    wordpress获取当前页面链接
    woocommerce面包屑导航breadcrumb的修改
    如何将wordpress的the_title()进行大小写处理
    Sitemap Error : XML declaration allowed only at the start of the document解决方法
    mysql解析binlog日志
  • 原文地址:https://www.cnblogs.com/TomAndJerry/p/10490182.html
Copyright © 2020-2023  润新知