微信小程序_今日头条

<a href="http://www.see-source.com:80/weixinwidget/downloadZip.html?wid=58">实例源码</a>

http://www.see-source.com/weixinwidget/detail.html?wid=58

blob.png

首页的开发过程。

   1. 首先在app.json中配置每个页面

{
  "pages":[
    "pages/index/index",
    "pages/attention/attention",
    "pages/mine/mine",
    "pages/video/video"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#d75b5d",
    "navigationBarTitleText": "今日头条",
    "navigationBarTextStyle":"white"
  },
   "tabBar": {
    "color": "#959394",
    "selectedColor": "#959394",
    "backgroundColor": "#f0f0f0",
    "borderStyle": "white",
    "list": [{
      "pagePath": "pages/index/index",
      "iconPath":"imges/tabbar/home_tabbar_22x22_.png",
      "selectedIconPath":"imges/tabbar/home_tabbar_press_22x22_@2x.png",
      "text": "首页"
    }, {
      "pagePath": "pages/video/video",
      "iconPath":"imges/tabbar/video_tabbar_22x22_.png",
      "selectedIconPath":"imges/tabbar/video_tabbar_press_22x22_@2x.png",
      "text": "视频"
    },{
      "pagePath": "pages/attention/attention",
      "iconPath":"imges/tabbar/newcare_tabbar_night_22x22_.png",
      "selectedIconPath":"imges/tabbar/newcare_tabbar_press_22x22_@2x.png",
      "text": "关注"
    },{
      "pagePath": "pages/mine/mine",
      "iconPath":"imges/tabbar/mine_tabbar_22x22_.png",
      "selectedIconPath":"imges/tabbar/mine_tabbar_press_22x22_@2x.png",
      "text": "我的"
    }]
  }
}

   1. 随后我们创建导航条。 布局:运用盒型布局即可。 思路:由于这个有动画效果,当时的想法是利用js来控制动画效果,配合微信的wx.createAnimation(OBJECT)来创建动画并且实现,当我点击当前的按钮的时候,用js来控制其大小变化,当我点击其他按钮的时候,遍历所有按钮然后设当前的按钮为变大状态,其他则缩小。但是在实现的时候发现在数据源用的是微信中数据绑定的形式渲染的,当前的按钮变大后其他按钮都随之变化,控制较难,所以作者放弃了这种思路

最终思路: 利用css3动画配合一个Bool值来使当前的视图发生变化。

    1. 使用<scroll-view scroll-x="true" scroll-y="false" class="tpscview" scroll-left="-2">来对导航条进行横向设置。

    2. 使用BOOL型数据animation来控制当前的状态。

    3. 使用css3代码来控制动画

.curPage {
     animation:myfirst 0.1s;
     animation-fill-mode:forwards;
}

@keyframes myfirst
{
    to {
       font-size: 50rpx;
    }
}

导航条3. 获取内容

  • 作者封装了以下网络接口首先初始化数据端。

import  {
    device_id,
    iid,
    BASE_URL,
} from "./constant.js"
var net = require("./netLoad.js");
function fetchHeadName(){
    let url = BASE_URL + "article/category/get_subscribed/v1/?"
    let params = {"device_id": device_id,"aid": 13,"iid": iid}
     return net.fetchApi(url, params, "GET").then(data=>data)
}

function loadHomeCategoryNewsFeed(category){
     let url = BASE_URL + "api/news/feed/v39/?"
     let params = {"device_id": device_id,"category": category,"iid": iid}
     return net.fetchApi(url,params,"GET").then(data=>data);
}

function loadHomeCategoryMoreNewsFeed(category, lastRefreshTime){
     let url = BASE_URL + "api/news/feed/v39/?"
     let params = {"device_id": device_id,
                      "category": category,
                      "iid": iid,
                      "last_refresh_sub_entrance_interval": lastRefreshTime}
     return net.fetchApi(url, params, "GET").then(data=>data);
}

export {
    fetchHeadName,
    loadHomeCategoryNewsFeed,
    loadHomeCategoryMoreNewsFeed
}
  • 接下来通过NetLoad.js封装文件来对网络进行请求。

import Promise from "../../bluebird/js/browser/bluebird.min.js"
module.exports = {
  fetchApi (url,params,method) {
  return new Promise((resolve, reject) => {
    wx.request({
      url: `${url}`,
      data: Object.assign({}, params),
      method:method,
      header: { 'Content-Type': 'application/json' },
      success: resolve,
      fail: reject
    })
  })
  }
}
  • 接下来通过wx.loading 组件来对用户进行请求提示

 <loading hidden="{{loading}}">
        加载中...
 </loading>

最终完成了此页面。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值