美文网首页vue.js
vue.js系列四:ajax(axios)

vue.js系列四:ajax(axios)

作者: suxin1932 | 来源:发表于2018-11-24 15:50 被阅读0次

1.下载axios

npm install axios --save

在线文档

https://github.com/pagekit/vue-resource/blob/develop/docs/http.md

1.1搜索框demo

图片.png

1.1.1index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="stylesheet" href="./static/css/bootstrap.css">
    <title>vue_demo</title>
  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

1.1.2main.js

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

let vm = new Vue({
  el: '#app',
  components: {
    App // 映射组件标签
  },
  template: '<app/>' // 指定需要渲染到页面的模板
})

Vue.use({
  vm
})

1.1.3App.vue组件

<template>
  <div class="container">
    <Search/>
    <UsersMain/>
  </div>
</template>

<script>
  import Main from './components/Main'
  import Search from './components/Search'
  export default {
    components: {
      Search,
      UsersMain: Main // 此处的Main会与html标签冲突,故而重命名了
    }
  }
</script>

<style scoped>

</style>

1.1.4Search.vue

<template>
  <section class="jumbotron">
    <h3 class="jumbotron-heading">Search Github Users</h3>
    <div>
      <input type="text" placeholder="enter the name you search" v-model="searchName"/>
      <button @click="search">Search</button>
    </div>
  </section>
</template>

<script>
  import PubSub from 'pubsub-js'
  export default {
    data () {
      return {
        searchName: ''
      }
    },
    methods: {
      search () {
        let searchName = this.searchName.trim()
        if (searchName) {
          // 分發一個search的消息
          PubSub.publish('search', searchName)
        }
      }
    }
  }
</script>

<style scoped>

</style>

1.1.5Main.vue

<template>
  <div>
    <h2 v-if="firstView">請輸入用戶名搜索</h2>
    <h2 v-if="loading">loading</h2>
    <h2 v-if="errorMsg">{{errorMsg}}</h2>
    <div class="row">
      <div class="card" v-for="(user, index) in users" :key="index" :index="index">
        <a :href="user.url" target="_blank">
          <img :src="user.img" style='width: 100px'/>
        </a>
        <p class="card-text">{{user.name}}</p>
      </div>
    </div>
  </div>
</template>

<script>
  import PubSub from 'pubsub-js'
  import axios from 'axios'
  export default {
    data () {
      return {
        firstView: true,
        loading: false,
        users: [], // 用戶數組
        errorMsg: ''
      }
    },
    mounted () {
      // 訂閱消息
      PubSub.subscribe('search', (msg, searchName) => {
        // 点击了搜索, 发ajax请求进行搜索

        // 更新數據:請求中狀態
        this.firstView = false
        this.loading = true
        this.users = []
        this.errorMsg = ''

        // 发ajax请求进行搜索
        const url = `https://api.github.com/search/users?q=${searchName}`
        axios.get(url)
          .then(response => {
            // 成功了, 更新数据(成功)
            this.loading = false
            this.users = response.data.items.map(item => ({
              url: item.html_url,
              img: item.avatar_url,
              name: item.login
            }))
          })
          .catch(error => {
            // 失敗了,更新數據(失敗)
            this.loading = false
            this.errorMsg = error
          })
      })
    }
  }
</script>

<style scoped>
  .card {
    float: left;
    width: 33.333%;
    padding: .75rem;
    margin-bottom: 2rem;
    border: 1px solid #efefef;
    text-align: center;
  }

  .card > img {
    margin-bottom: .75rem;
    border-radius: 100px;
  }

  .card-text {
    font-size: 85%;
  }
</style>

1.1.6本地启动即可

npm run dev

2.vue UI 组件库

1) Mint UI:(移动端)
a. 主页: http://mint-ui.github.io/#!/zh-cn
b. 说明: 饿了么开源的基于 vue 的移动端 UI 组件库
2) Elment:(PC端)
a. 主页: http://element-cn.eleme.io/#/zh-CN
b. 说明: 饿了么开源的基于 vue 的 PC 端 UI 组件库

2.1下载mint-ui

npm install --save mint-ui

相关文章

  • vue.js系列四:ajax(axios)

    1.下载axios 在线文档 1.1搜索框demo 1.1.1index.html 1.1.2main.js 1....

  • Vue-(7)Ajax(axios)

    Vue.js 2.0版本推荐使用 axios 来完成 ajax 请求。 Axios 是一个基于 Promise 的...

  • 11、Vue_axios简单使用

    axios axios是一个基于Promiose的HTTP库,用于在Vue.js中完成ajax请求,也可以用在浏览...

  • 使用 axios 实现 ajax 方案

    使用 axios 实现ajax方案 vue.js 自2.0版本已经不对 vue-resource 更新了,官方推荐...

  • Ajax技术之 Axios(第四篇)

    今天介绍下vue官方推荐的Ajax请求方式:Axios,这是我介绍的Ajax技术的第四篇,也是该系列的最后一篇。 ...

  • Vue.js Ajax(axios)

    Vue. js2.0版本推荐使用axios来完成ajax请求。Axios是一个基于Promise的HTTP库,可以...

  • 2018-09-26

    axios axios: vue中的ajax(ajax:前端页面和后台数据做交互) axios的应用

  • 小坑集锦

    呵呵哒我就 axios报错系列(ajax $http) 1.报错 Cannot read property ‘pr...

  • 【vue学习】axios

    Ajax、fetch、axios的区别与优缺点 axios的github地址 原生ajax jqueryAjax ...

  • ajax上传

    ajax axios

网友评论

    本文标题:vue.js系列四:ajax(axios)

    本文链接:https://www.haomeiwen.com/subject/wfbpqqtx.html