Vue簡單例子-調(diào)用聚合數(shù)據(jù)API顯示新聞.md

本來是spring boot和前端vue一起學(xué)的(我這顆勵(lì)志當(dāng)全棧工程師的心啊(ˇ?ˇ)),發(fā)現(xiàn)精力跟不上偶妖,于是就只研究vue。后臺數(shù)據(jù)用REST方式從聚合數(shù)據(jù)獲取唉擂,當(dāng)然前提是有他們的賬號餐屎。

npm i vue-cli -g //安裝vue腳手架
vue init webpack-simple#1.0 newsapp // webpack-simple工程目錄比較簡單,說實(shí)話玩祟,默認(rèn)的webpack腳手架工程看不懂腹缩。。。以后再研究吧藏鹊,vue版本選1.0润讥,2.0還沒學(xué)
cd newsapp & npm i 
npm i vue-resource --save // 需要用到vue-resource

工程目錄:

Paste_Image.png

index.html , 使用bootstrap

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" >
    <title>newsapp</title>
  </head>
  <body>
    <app></app>
    <script src="dist/build.js"></script>
  </body>
</html>

main.js 沒啥變化

import Vue from 'vue'
import App from './App.vue'

Vue.config.debug = true

new Vue({
  el: 'body',
  components: { App }
})

插播一下聚合數(shù)據(jù)的請求格式:

Paste_Image.png

返回格式類似于這樣:

{   
"reason":"成功的返回",   
"result":{      "stat":"1",     
"data":[            

          {             
        "title":"高曉松為王寶強(qiáng)打氣 明天離婚案王寶強(qiáng)現(xiàn)身馬蓉不出庭",                
        "date":"2016-10-17 15:01",              
        "author_name":"人民網(wǎng)",                "thumbnail_pic_s":"http:\/\/02.imgmini.eastday.com\/mobile\/20161017\/20161017150141_b0a5bc32a3e75044e5604d090a702dac_1_mwpm_03200403.jpeg",                "thumbnail_pic_s02":"http:\/\/02.imgmini.eastday.com\/mobile\/20161017\/20161017150141_b0a5bc32a3e75044e5604d090a702dac_1_mwpl_05500201.jpeg",              "thumbnail_pic_s03":"http:\/\/02.imgmini.eastday.com\/mobile\/20161017\/20161017150141_b0a5bc32a3e75044e5604d090a702dac_1_mwpl_05500201.jpeg",              "url":"http:\/\/mini.eastday.com\/mobile\/161017150141494.html?qid=juheshuju",              "uniquekey":"161017150141494",              "type":"頭條",                "realtype":"娛樂" },          {               "title":"這年頭當(dāng)鴨居然這么不容易!",                "date":"2016-10-17 16:15",              "author_name":"任真天",                "thumbnail_pic_s":"http:\/\/08.imgmini.eastday.com\/mobile\/20161017\/20161017161510_6932252a05947fa6dc80ffec4ee8e282_1_mwpm_03200403.jpeg",                "thumbnail_pic_s02":"http:\/\/08.imgmini.eastday.com\/mobile\/20161017\/20161017161510_6932252a05947fa6dc80ffec4ee8e282_1_mwpl_05500201.jpeg",

//可以看到只要data數(shù)組就行了

App.vue

<template>
<div class="alert alert-warning" role="alert" v-if="error!=''">{{error}}</div>
 <top-header></top-header>
 <main-list :news-list="news"></main-list>

</template>

<script>
  import TopHeader from './components/TopHeader.vue'
  import MainList from './components/MainList.vue'

import Vue from 'vue'
var vueResource = require('vue-resource')
Vue.use(vueResource)

  export default {
    data () {
      return {
        news : [],
        error:''
      }
    },
    components :{
      TopHeader,MainList
    },
    created :
    function(){
      this.getData('top');
    },
    events:{
      'onGetData':function(dataType){
        this.getData(dataType);
      }
    },
    methods :{
      getData : function(dataType){
          this.$http.get('http://v.juhe.cn/toutiao/index?key=你的key&type='+dataType).then((response) => {

            this.$set('news', response.body.result.data);

          }, (response) => {
this.error = response.error_code
          });
        }
      }
    }
  </script>

  <style>
    body {
      font-family: Helvetica, sans-serif;
    }
  </style>

TopHeader.vue

<template>
    <div><ul class="nav nav-tabs nav-justified" role="tablist">
      <li role="presentation" ><a href="#" @click="getData('top')">頭條</a></li>
      <li role="presentation" ><a href="#"  @click="getData('shehui')">社會</a></li>
      <li role="presentation"  ><a href="#"  @click="getData('guonei')">國內(nèi)</a></li>
      <li role="presentation"><a href="#"  @click="getData('guoji')">國際</a></li>
      <li role="presentation"><a href="#"  @click="getData('yule')">娛樂</a></li>
      <li role="presentation"><a href="#"  @click="getData('tiyu')">體育</a></li>
      <li role="presentation"><a href="#"  @click="getData('junshi')">軍事</a></li>
      <li role="presentation"><a href="#"  @click="getData('keji')">科技</a></li>
      <li role="presentation"><a href="#"  @click="getData('caijing')">財(cái)經(jīng)</a></li>
      <li role="presentation"><a href="#"  @click="getData('shishang')">時(shí)尚</a></li>
  </ul></div>

</template>

<script>
    export default{
        methods :{
            getData: function(dType){
                this.$dispatch('onGetData',dType);
            }
        }
    }
</script>

MainList.vue

<template>
    <div class="row" id="main">
    <div class="col-sm-6 col-md-4" v-for="n in newsList">
        <div class="thumbnail"  >
           <a :href="n.url">
              <img :src="n.thumbnail_pic_s" :alt="n.author_name" >
              <div class="caption">
                <p class="text-center">{{n.title}}</p>

            </div>
        </a>
     </div>
    </div>
    </div>
</div>

</template>

<script>
    export default{
        props: ['newsList']
    }
</script>
<style>
    #main {
        margin-top: 10px
    }
</style>

  • 為了體現(xiàn)組件化思想,我把頂部導(dǎo)航條單獨(dú)出來一個(gè)組件盘寡,這樣也有一個(gè)麻煩就是每次點(diǎn)擊都要dispatch事件楚殿,然后在父組件App.vue里監(jiān)聽這個(gè)事件onGetData. 事件處理很簡單就是使用vue-resource調(diào)用聚合的API獲取數(shù)據(jù),最后利用props傳入子組件Mainlist.vue

效果:

1431816-0624a5871f445fb7.png

重要提示:vue -resource本地調(diào)試會有跨域問題竿痰,使用chrome 瀏覽器的話可以下個(gè)擴(kuò)展插件

1431816-821482aa727dc66a.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脆粥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子影涉,更是在濱河造成了極大的恐慌变隔,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蟹倾,死亡現(xiàn)場離奇詭異匣缘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鲜棠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門肌厨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人豁陆,你說我怎么就攤上這事柑爸。” “怎么了献联?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵竖配,是天一觀的道長何址。 經(jīng)常有香客問我里逆,道長,這世上最難降的妖魔是什么用爪? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任原押,我火速辦了婚禮,結(jié)果婚禮上偎血,老公的妹妹穿的比我還像新娘诸衔。我一直安慰自己,他們只是感情好颇玷,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布贞让。 她就那樣靜靜地躺著徘键,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酱虎,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天羡微,我揣著相機(jī)與錄音,去河邊找鬼。 笑死切揭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锁摔。 我是一名探鬼主播廓旬,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谐腰!你這毒婦竟也來了孕豹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤十气,失蹤者是張志新(化名)和其女友劉穎巩步,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桦踊,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡椅野,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了籍胯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竟闪。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖杖狼,靈堂內(nèi)的尸體忽然破棺而出炼蛤,到底是詐尸還是另有隱情,我是刑警寧澤蝶涩,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布理朋,位于F島的核電站,受9級特大地震影響绿聘,放射性物質(zhì)發(fā)生泄漏嗽上。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一熄攘、第九天 我趴在偏房一處隱蔽的房頂上張望兽愤。 院中可真熱鬧,春花似錦挪圾、人聲如沸浅萧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洼畅。三九已至,卻和暖如春棚赔,著一層夾襖步出監(jiān)牢的瞬間帝簇,已是汗流浹背务热。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留己儒,地道東北人崎岂。 一個(gè)月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像闪湾,于是被迫代替她去往敵國和親冲甘。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理途样,服務(wù)發(fā)現(xiàn)江醇,斷路器,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • 謝謝各位一整天在刷屏提醒我何暇,羅一笑小朋友事件是一場有預(yù)謀的炒作陶夜。撇開其他不談,先問問大家三個(gè)問題: 第一裆站,羅一笑是...
    Ms九爺閱讀 201評論 0 0
  • 本書邏輯脈絡(luò) 本書主講:如何找到自己真正想從事的工作(職業(yè)規(guī)劃) 一条辟、提出錯(cuò)誤觀點(diǎn):激情思維是錯(cuò)誤的 eg.喬布斯...
    底層的奮進(jìn)閱讀 266評論 0 0
  • 嫁入豪門肩袍,在物質(zhì)社會十分發(fā)達(dá)的現(xiàn)在杭棵,可以說是很多女孩兒的夢想。因?yàn)榧奕牒篱T氛赐,就意味著可以少奮斗好多年魂爪。然而,能嫁入...
    灰姑娘玻璃鞋閱讀 680評論 0 2
  • 把多肉植物的知識,分解成每個(gè)點(diǎn)蛙婴,詳細(xì)的介紹粗井,讓你種肉變得簡單〗滞迹《玩轉(zhuǎn)多肉植物》這個(gè)系列,會從出初級懒构、中級餐济、高級幾個(gè)...
    多肉花客閱讀 5,366評論 0 1