1.5

配置代理

vue.config里面配置

只能配置一个代理 只能给5000发(方式一)

  开启代理服务器(代理服务器的端口号已经是8080 不需要管 只需要给5000发请求 写端口号5000)
   devServer: {
    //代理服务器请求转发给端口5000
    proxy: 'http://localhost:5000'
   }
   ,


  //方式二
  devServer: {
    proxy: {
      '/api': {//请求前缀 决定走代理       尽管8080已有同样的文件 但是还是转发请求给5000 
        target: 'http://localhost:5000',
        pathRewrite:{'^/api':''},//代理服务器转发给5000 将前面的前缀去掉 可以在5000找到
        ws: true,//用于支持websocket
        changeOrigin: true //不如实回答自己的来源端口号
      },
      
    }
  }

 使用

<template>
    <div class="hello">
     <button @click="getstudent">点击获取信息</button>
    </div>
    
</template>
<!-- 配置代理服务器 服务器与服务器之间使用http请求 不是ajax请求  无关同源策略 -->
<!-- 借助脚手架开启代理服务器 -->
<script>
import axios from 'axios'
export default {
    methods: {
        //方法一
        getstudent() {
            //配置的代理服务器端口号是8080 所以向8080发请求
            axios.get('http://localhost:8080/students').then((response) => {
                console.log(response.data)
            }, (error) => {
                console.log(error.message)
            })
        },


        //public文件是8080服务器的根路径 文件里有什么 8080就有什么
    //但是代理服务器不会都把所有请求转发给5000 8080有的信息就不会转发给5000

      //方法二
        getstudent() {
            //配置的代理服务器端口号是8080 所以向8080发请求
            axios.get('http://localhost:8080/api/students').then((response) => {
                console.log(response.data)
            }, (error) => {
                console.log(error.message)
            })
        }
    }
 

    

    
}

</script>

<style >
.hello{
    background-color: grey;
}
</style>





github案例

<template>  
 <div class="row">
    <!-- 使用user.login 用户登录名作为唯一标识符 -->
      <div v-show="info.Getusers.length" class="card" v-for="user in info.Getusers" :key="user.login">
        <!-- 跳转到用户主页 -->
        <a :href="user.html_url" target="_blank">
            <!-- 头像地址 -->
          <img :src="user.avatar_url" style='width: 100px'/> 

    </a>
        <p class="card-text">{{user.login}}</p>
       
      </div>
        <h1 v-show="info.isFirst">欢迎使用</h1>
        <h1 v-show="info.isLoading">Loading...</h1>
        <h1 v-show="info.errMsg">{{info.errMsg}}</h1>

    </div>
</template> 

<script>  


 export default {  
    name: 'List',
    data() {
        return {
            info: {
            isFirst: true,
            isLoading: false,
            errMsg: '',
            Getusers: [],
            }
        }
    },
    //接收数据
    mounted(){
    this.$bus.$on('getusers', (dataObj) => {
        // this.info=dataObj //第一种方式  直接赋值 如果后续省略isFirst的值的话 会丢失这个数据
         this.info={...this.info,...dataObj}   //第二种方式 可以省略isFirst的值 可以使用扩展运算符 进行后面的值覆盖 而且可以传参数时改变顺序
    })
  }

} 




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

<script>
 
import axios from 'axios'
 export default {  

    name: 'Search',
 data() {
    return {
        keyword:''
    }
    },
    methods: {
        search() {

            //请求前
        this.$bus.$emit('getusers', { isFirst: false, isLoading: true, errMsg: '', Getusers: [] })
        //使用vue-resource发送请求              
        //this.$http.get() 其他与axios相同
            //第一种模板字符串  想让this.keyword按js表达式执行 需要${}
            axios.get(`https://api.github.com/search/users?q=${this.keyword}`).then((response) => {
                //成功之后进行传数据
                console.log('请求成功',response.data.items)
                //第一种
                // this.$bus.$emit('getusers', { isFirst: false, isLoading: false, errMsg: '', Getusers: response.data.items })

                //第二种
                //isFirst的值不会在改变 后面继续写会比较麻烦 可以省略 使用扩展运算符
                this.$bus.$emit('getusers', {  isLoading: false, errMsg: '', Getusers: response.data.items })

            }, (error) => {
                console.log(error.message)
                //第一种
                // this.$bus.$emit('getusers', { isFirst: false, isLoading: false, errMsg: error.message, Getusers: [] })
                //第二种
                this.$bus.$emit('getusers',{isLoading:false,errMsg:error.message,Getusers:[]})

            })


            //第二种配置params写参数
            // axios.get('https://api.github.com/search/users', {
            //     params: {
            //         q:this.keyword
            //     }
            // }).then((response) => {
            //      console.log(response.data.items)
            // }, (error) => {
            //     console.log(error.message)
            // })

    }
    },
   


  } 

</script> 

//另一种发送请求的方法(vue-resource是插件)

import VueResource from 'vue-resource'

Vue.use(VueResource)

默认插槽

<Category title="美食">
    <!-- img 在APP这解析完之后才传到category组件的 可以在APP这做样式设定 -->
  <img src="./assets/logo.png" alt="">
  </Category>
<div class="Category"> 
    <h3>{{title}}分类</h3>
     <slot></slot>
  
    </div>   

具名插槽

<Category title="美食">
    <!-- img 在APP这解析完之后才传到category组件的 可以在APP这做样式设定 -->
  <img   slot="center" src="./assets/logo.png" alt="">
  <a href="www.baidu.com" slot="footer">点我跳转</a>
  </Category>

 

<div class="Category"> 
    <h3>{{title}}分类</h3>
     <slot name="center"></slot>
     <slot name="footer"></slot>

    </div>   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值