微信小程序(應用號)開發(fā)新聞客戶端的實戰(zhàn)課程

摘要: 本實例將演示從零開發(fā)一個微信應用號的過程娩嚼,頁面輪播與跳轉(zhuǎn)傳值殷绍,實現(xiàn)單元格自定義布局冠摄,全部源碼可通過github下載梗摇。

下載最新版的微信小程序開發(fā)工具拓哟,目前是v0.9.092300
下載地址:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html
官方文檔:https://mp.weixin.qq.com/debug/wxadoc/dev/index.html
git下載地址:http://git.oschina.net/dotton/news
先看下效果圖:

Paste_Image.png

一、新建應用
1.內(nèi)測階段對于無內(nèi)測號的開發(fā)者伶授,請點無AppId断序。

Paste_Image.png

2.然后選擇一個本地目錄作為工程目錄。

Paste_Image.png

3.項目名稱任意糜烹,設置好目錄逢倍,勾上當前目錄創(chuàng)建quick start項目。如圖:

Paste_Image.png

4.點擊添加項目景图,這時可以運行的效果。是自己的微信個人信息以及一HelloWorld文本框碉哑。
5.右邊是調(diào)試窗口挚币,有2個警告亮蒋,是由于沒有AppID導致的,可以暫時忽略妆毕,不影響開發(fā)慎玖。

Paste_Image.png

6.提示一下,在app.json中設置debug:true笛粘,這樣控制臺看到實時的交互信息趁怔,以及將來在js文件中設置斷點,類似與Chrome的調(diào)試工具以及Firefox的Firebug薪前。
關(guān)于首頁配置:

{
  "pages":[
    "pages/index/index",
    "pages/logs/logs"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "WeChat",
    "navigationBarTextStyle":"black"
  },
  "debug":true
}

其中pages屬性表明每一個頁面的存在润努,其中第一條為首頁,即pages/index/index
二示括、請求網(wǎng)絡API接口
1.前提條件:
這里需要用到聚合數(shù)據(jù)的新聞接口铺浇,前往:https://www.juhe.cn/docs/api/id/235 注冊、申請接口垛膝,拿到key鳍侣,我這里已經(jīng)申請到一個key:482e213ca7520ff1a8ccbb262c90320a,可以直接拿它做測試吼拥,然后就可以將它集成到自己的應用了倚聚。
2.使用微信小程序接口來訪問網(wǎng)絡:
改寫index.js文件:

//index.js
//獲取應用實例
var app = getApp()
Page({
  data: {
    motto: 'Hello World',
    userInfo: {}
  },
  //事件處理函數(shù)
  bindViewTap: function() {
    wx.navigateTo({
      url: '../logs/logs'
    })
  },
  onLoad: function () {
  // 訪問聚合數(shù)據(jù)的網(wǎng)絡接口
  wx.request({
    url: 'http://v.juhe.cn/toutiao/index',
    data: {
     type: '' ,
     key: '482e213ca7520ff1a8ccbb262c90320a'
    },
    header: {
        'Content-Type': 'application/json'
    },
    success: function(res) {
      console.log(res.data)
    }
  })

    console.log('onLoad')
    var that = this
    //調(diào)用應用實例的方法獲取全局數(shù)據(jù)
    app.getUserInfo(function(userInfo){
      //更新數(shù)據(jù)
      that.setData({
        userInfo:userInfo
      })
    })
  }
})

3.查看效果,檢查Console控制臺凿可,得到以下信息:

Paste_Image.png

說明已經(jīng)成功取得到了數(shù)據(jù)惑折。
三、將json格式的數(shù)據(jù)渲染到視圖
這里要用到swipe組件實現(xiàn)大圖輪播矿酵,文檔見:https://mp.weixin.qq.com/debug/wxadoc/dev/component/swiper.html
1.清空原index.wxml內(nèi)容唬复,加入如下代碼:

<swiper indicator-dots="true"
  autoplay="true" interval="5000" duration="1000">
  <block wx:for="{{topNews}}">
    <swiper-item>
      <image src="{{item.thumbnail_pic_s02}}" class="slide-image" width="355" height="150"/>
    </swiper-item>
  </block>
</swiper>

2.相應地在index.js文件的onLoad方法中加入如下代碼來獲取網(wǎng)絡數(shù)據(jù)

//index.js
//獲取應用實例
var app = getApp()
Page({
  data: {
    topNews:[],
    techNews:[]
  },
  onLoad: function () {
    var that = this
  // 訪問聚合數(shù)據(jù)的網(wǎng)絡接口-頭條新聞
  wx.request({
    url: 'http://v.juhe.cn/toutiao/index',
    data: {
     type: 'topNews' ,
     key: '482e213ca7520ff1a8ccbb262c90320a'
    },
    header: {
        'Content-Type': 'application/json'
    },
    success: function(res) {
      if (res.data.error_code == 0) {
        that.setData({
        topNews:res.data.result.data
        })
      } else {
        console.log('獲取失敗');
      }
    }
  })

  }
})

3.看到輪播已經(jīng)成功的展示出來了

Paste_Image.png

4.依樣畫葫蘆,同樣操作讀取列表新聞:

<view class="news-list">
  <block wx:for="{{techNews}}">
    <text class="news-item">{{index + 1}}. {{item.title}}</text>
  </block>
</view>

配合樣式表全肮,不然列表文字排版是橫向的敞咧,將以下css加到index.wxss中:

.news-list {
  display: flex;
  flex-direction: column;
  padding: 40rpx;
}
.news-item {
  margin: 10rpx;
}

繼續(xù)美化,文字列表也采用縮略圖+大標題+出處+日期的形式

Paste_Image.png

樣式表與布局文件 index.wxss

/**index.wxss**/
.news-list {
  display: flex;
  flex-direction: column;
  padding: 40rpx;
}

.news-item {
  display: flex;
  flex-direction: row;
  height:200rpx;
}

.news-text {
  display: flex;
  flex-direction: column;
}

.news-stamp {
    font-size: 25rpx;
    color:darkgray;
    padding: 0 20rpx;
    display: flex;
    flex-direction: row;
    justify-content:space-between;
}

.news-title {
  margin: 10rpx;
  font-size: 30rpx;
}

.container {
  height: 5000rpx;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  /*padding: 200rpx 0;*/
  box-sizing: border-box;
}

.list-image {
  width:150rpx;
  height:100rpx;
}

index.wxml

<!--index.wxml-->
<swiper indicator-dots="true"
  autoplay="true" interval="5000" duration="1000">
  <block wx:for="{{topNews}}">
    <swiper-item>
      <image src="{{item.thumbnail_pic_s02}}" mode="aspectFill" class="slide-image" width="375" height="250"/>
    </swiper-item>
  </block>
</swiper>
<view class="container news-list">
  <block wx:for="{{techNews}}">
    <view class="news-item">
      <image src="{{item.thumbnail_pic_s}}" mode="aspectFill" class="list-image"/>
      <view class="news-text">
        <text class="news-title">{{item.title}}</text>
        <view class="news-stamp">
          <text>{{item.author_name}}</text>
          <text>{{item.date}}</text>
        </view>
      </view>
    </view>
  </block>
</view>

四辜腺、跳轉(zhuǎn)詳情頁與傳值
保存當前點擊的新聞條目信息中的title休建,參見官方文檔:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/event.html
傳值到詳情頁

<!--logs.wxml-->
<view class="container">
  <text class="news-title">{{title}}</text>
  <text class="news-info">暫時找不到WebView的組件接口,于是不能加載網(wǎng)頁數(shù)據(jù)</text>
</view>
  //事件處理函數(shù)
  bindViewTap: function(event) {
    wx.navigateTo({
      url: '../detail/detail?title='+event.currentTarget.dataset.newsTitle
    })
  }

//index.js
   //事件處理函數(shù)
  bindViewTap: function(event) {
    wx.navigateTo({
      url: '../detail/detail?title='+event.currentTarget.dataset.newsTitle
    })
  }
<!--index.wxml-->
//加入data-xxx元素來傳值
<view class="container news-list">
  <block wx:for="{{techNews}}">
    <view class="news-item" data-news-title="{{item.title}}" bindtap="bindViewTap">
      <image src="{{item.thumbnail_pic_s}}" mode="aspectFill" class="list-image"/>
      <view class="news-text">
        <text class="news-title">{{item.title}}</text>
        <view class="news-stamp">
          <text>{{item.author_name}}</text>
          <text>{{item.date}}</text>
        </view>
      </view>
    </view>
  </block>
</view>

當然也可以通過獲取全局的變量的方式傳值评疗,這里場景是由一個頁面與子頁面是一對一傳值關(guān)系测砂,所以不推薦,可參考quickStart項目中微信個人信息的傳值方式來做百匆。 app.js末尾加上

 globalData:{
    userInfo:null,
    newsItem:null
  }
})
Paste_Image.png

由于未在官方文檔中找到WebView的組件砌些,所以詳情的網(wǎng)頁正文暫時無法實現(xiàn)。
結(jié)語
整體開發(fā)過程還是比較舒適的,上手難度不高存璃,過程中用到一定的CSS語法仑荐,本質(zhì)上還是體現(xiàn)了一個H5開發(fā)模式,WXML實質(zhì)上一種模板標簽語言纵东。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末粘招,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子偎球,更是在濱河造成了極大的恐慌洒扎,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衰絮,死亡現(xiàn)場離奇詭異袍冷,居然都是意外死亡,警方通過查閱死者的電腦和手機岂傲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門难裆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人镊掖,你說我怎么就攤上這事乃戈。” “怎么了亩进?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵症虑,是天一觀的道長。 經(jīng)常有香客問我归薛,道長谍憔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任主籍,我火速辦了婚禮习贫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘千元。我一直安慰自己苫昌,他們只是感情好,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布幸海。 她就那樣靜靜地躺著祟身,像睡著了一般。 火紅的嫁衣襯著肌膚如雪物独。 梳的紋絲不亂的頭發(fā)上袜硫,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機與錄音挡篓,去河邊找鬼婉陷。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的憨攒。 我是一名探鬼主播世杀,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼肝集!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蛛壳,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤杏瞻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后衙荐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捞挥,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年忧吟,在試婚紗的時候發(fā)現(xiàn)自己被綠了砌函。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡溜族,死狀恐怖讹俊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情煌抒,我是刑警寧澤仍劈,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站寡壮,受9級特大地震影響贩疙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜况既,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一这溅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧棒仍,春花似錦悲靴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至榜配,卻和暖如春否纬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蛋褥。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工临燃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓膜廊,卻偏偏與公主長得像乏沸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子爪瓜,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

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