Vue简单例子-调用聚合数据API显示新闻.md

本来是spring boot和前端vue一起学的(我这颗励志当全栈工程师的心啊(ˇ∀ˇ)),发现精力跟不上,于是就只研究vue。后台数据用REST方式从聚合数据获取,当然前提是有他们的账号。

npm i vue-cli -g //安装vue脚手架
vue init webpack-simple#1.0 newsapp // webpack-simple工程目录比较简单,说实话,默认的webpack脚手架工程看不懂。。。以后再研究吧,vue版本选1.0,2.0还没学
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" href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css">
    <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 }
})

插播一下聚合数据的请求格式:

Paste_Image.png

返回格式类似于这样:

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

          {             
        "title":"高晓松为王宝强打气 明天离婚案王宝强现身马蓉不出庭",                
        "date":"2016-10-17 15:01",              
        "author_name":"人民网",                "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":"这年头当鸭居然这么不容易!",                "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数组就行了

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')">国内</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')">财经</a></li>
      <li role="presentation"><a href="#"  @click="getData('shishang')">时尚</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>

  • 为了体现组件化思想,我把顶部导航条单独出来一个组件,这样也有一个麻烦就是每次点击都要dispatch事件,然后在父组件App.vue里监听这个事件onGetData. 事件处理很简单就是使用vue-resource调用聚合的API获取数据,最后利用props传入子组件Mainlist.vue

效果:

1431816-0624a5871f445fb7.png

重要提示:vue -resource本地调试会有跨域问题,使用chrome 浏览器的话可以下个扩展插件

1431816-821482aa727dc66a.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,495评论 18 139
  • 谢谢各位一整天在刷屏提醒我,罗一笑小朋友事件是一场有预谋的炒作。撇开其他不谈,先问问大家三个问题: 第一,罗一笑是...
    Ms九爷阅读 199评论 0 0
  • 本书逻辑脉络 本书主讲:如何找到自己真正想从事的工作(职业规划) 一、提出错误观点:激情思维是错误的 eg.乔布斯...
    底层的奋进阅读 263评论 0 0
  • 嫁入豪门,在物质社会十分发达的现在,可以说是很多女孩儿的梦想。因为嫁入豪门,就意味着可以少奋斗好多年。然而,能嫁入...
    灰姑娘玻璃鞋阅读 678评论 0 2
  • 把多肉植物的知识,分解成每个点,详细的介绍,让你种肉变得简单。《玩转多肉植物》这个系列,会从出初级、中级、高级几个...
    多肉花客阅读 5,263评论 0 1