微信小程序嘗試--今日頭條

微信小程序在近期比較火熱渠脉,作者在閑暇之余研究后決定做一個(gè)今日頭條的小demo瓶佳。

TodayNews.gif

首先感謝此作者的接口提供。


首頁的開發(fā)過程为朋。

  1. 首先在app.json中配置每個(gè)頁面
{
  "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": "關(guān)注"
    },{
      "pagePath": "pages/mine/mine",
      "iconPath":"imges/tabbar/mine_tabbar_22x22_.png",
      "selectedIconPath":"imges/tabbar/mine_tabbar_press_22x22_@2x.png",
      "text": "我的"
    }]
  }
}
  1. 隨后我們創(chuàng)建導(dǎo)航條潜腻。
    布局:運(yùn)用盒型布局即可。
    思路:由于這個(gè)有動(dòng)畫效果童番,當(dāng)時(shí)的想法是利用js來控制動(dòng)畫效果威鹿,配合微信的wx.createAnimation(OBJECT)來創(chuàng)建動(dòng)畫并且實(shí)現(xiàn),當(dāng)我點(diǎn)擊當(dāng)前的按鈕的時(shí)候忽你,用js來控制其大小變化,當(dāng)我點(diǎn)擊其他按鈕的時(shí)候根蟹,遍歷所有按鈕然后設(shè)當(dāng)前的按鈕為變大狀態(tài)糟秘,其他則縮小。但是在實(shí)現(xiàn)的時(shí)候發(fā)現(xiàn)在數(shù)據(jù)源用的是微信中數(shù)據(jù)綁定的形式渲染的散庶,當(dāng)前的按鈕變大后其他按鈕都隨之變化凌净,控制較難,所以作者放棄了這種思路

最終思路: 利用css3動(dòng)畫配合一個(gè)Bool值來使當(dāng)前的視圖發(fā)生變化冰寻。

  • 使用<scroll-view scroll-x="true" scroll-y="false" class="tpscview" scroll-left="-2">來對(duì)導(dǎo)航條進(jìn)行橫向設(shè)置。
  • 使用BOOL型數(shù)據(jù)animation來控制當(dāng)前的狀態(tài)没卸。
  • 使用css3代碼來控制動(dòng)畫
.curPage {
     animation:myfirst 0.1s;
     animation-fill-mode:forwards;
}

@keyframes myfirst
{
    to {
       font-size: 50rpx;
    }
}
導(dǎo)航條

3. 獲取內(nèi)容

  • 作者封裝了以下網(wǎng)絡(luò)接口首先初始化數(shù)據(jù)端。
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封裝文件來對(duì)網(wǎng)絡(luò)進(jìn)行請(qǐng)求迁筛。
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 組件來對(duì)用戶進(jìn)行請(qǐng)求提示
 <loading hidden="{{loading}}">
        加載中...
 </loading>

最終完成了此頁面。


另外其他頁面詳見作者github上的代碼尉桩。

  • 若覺得本文對(duì)您有幫助請(qǐng)給個(gè)star贪庙。
  • 若有改進(jìn)歡迎一起討論并學(xué)習(xí)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末这橙,一起剝皮案震驚了整個(gè)濱河市导披,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撩匕,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件模蜡,死亡現(xiàn)場離奇詭異扁凛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)膝昆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門叠必,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人收叶,你說我怎么就攤上這事共苛。” “怎么了隅茎?”我有些...
    開封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵辟犀,是天一觀的道長。 經(jīng)常有香客問我,道長玻佩,這世上最難降的妖魔是什么席楚? 我笑而不...
    開封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮烦秩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘甚脉。我一直安慰自己铆农,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開白布猴凹。 她就那樣靜靜地躺著岭皂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪爷绘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天购对,我揣著相機(jī)與錄音陶因,去河邊找鬼。 笑死解幽,一個(gè)胖子當(dāng)著我的面吹牛烘苹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播镣衡,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼然爆!你這毒婦竟也來了黍图?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤剖张,失蹤者是張志新(化名)和其女友劉穎揩环,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丰滑,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡褒墨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了浑玛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片噩咪。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖胃碾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情灰伟,我是刑警寧澤儒旬,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站挡爵,受9級(jí)特大地震影響甚垦,放射性物質(zhì)發(fā)生泄漏茶鹃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一挣郭、第九天 我趴在偏房一處隱蔽的房頂上張望疗韵。 院中可真熱鬧,春花似錦蕉汪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至业岁,卻和暖如春寇蚊,著一層夾襖步出監(jiān)牢的瞬間笔时,已是汗流浹背仗岸。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來泰國打工扒怖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盗痒。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像骡楼,于是被迫代替她去往敵國和親稽鞭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容