首頁  >  文章  >  web前端  >  vue2.0 axios跨域和渲染有哪些需要注意的

vue2.0 axios跨域和渲染有哪些需要注意的

php中世界最好的语言
php中世界最好的语言原創
2018-03-29 09:31:191556瀏覽

這次帶給大家vue2.0 axios跨域和渲染有哪些需要注意的,vue2.0 axios跨域和渲染的注意事項有哪些,下面就是實戰案例,一起來看一下。

(用的腳手架vue-cli)

第一步: 在main.js中如下宣告使用

#
import axios from
'axios';
Vue.prototype.$axios=axios;

那麼在其他vue元件中就可以this.$axios呼叫使用

第二步:在webpack設定proxyTable(config之下的index.js )

dev:
 { 
加入以下
proxyTable:
{
'/api':
{
target:
'http://api.douban.com',//设置你调用的接口域名和端口号
 别忘了加http 
changeOrigin:
true,
pathRewrite:
 { 
'^/api':
'/'//这里理解成用‘/api'代替target里面的地址,后面组件中我们掉接口时直接用api代替
 
比如我要调用'http://api.douban.com/v2/movie/top250',直接写‘/api/v2/movie/top250'即可
}
}
},

第三個步驟:

試一下,跨域成功了,但是注意了,這只是開發環境(dev)中解決了跨域問題,生產環境中真正部署到伺服器上如果是非同源還是存在跨域問題,如我們部署的伺服器連接埠是3001,需要前後端聯調,第一步前端我們可以分生產production和開發development兩種環境分別測試,在config/dev.env.js和prod.env.js裡也就是開發/生產環境下分別配置請求的地址API_HOST,開發環境中我們用上面配置的代理位址api,生產環境下用正常的介面位址,所以這樣設定

module.exports = merge(prodEnv, {
 NODE_ENV: '"development"',//开发环境
 API_HOST:"/api/"
})
module.exports = {
 NODE_ENV: '"production"',//生产环境
 API_HOST:'"http://api.douban.com"'
}

當然不管是開發還是生產環境都可以直接請求http://api.douban.com。配置好之後測試時程式會自動判斷目前是開發還是生產環境,然後自動匹配API_HOST,我們在任何元件裡都能用process.env.API_HOST來使用地址如

instance.post(process.env.API_HOST+'user/login', this.form)

然後第二步後端伺服器設定一下cros跨域即可,就是access-control-allow-origin:*允許所有存取的意思。綜上:開發的環境下我們前端可以自己配置個proxy代理就能跨域了,真正的生產環境下還需要後端的配合的。某大神說:此方法ie9以下不好使,如果需要相容,最好的辦法是後端在伺服器埠加個代理,效果類似開發時webpack的代理。

第四步:

<template>
<p>
  <ul>
    <li v-for="item in movieArr">
      <span>{{item.title}}</span>
    </li>
  </ul>
  <button @click="sayOut">渲染</button>
</p>
</template>
<script>
export default {
 data () {
  return {
    movieArr : []
  }
 },
 methods: {
   sayOut () {
     this.$axios.get('/api/v2/movie/top250')
    .then((response) => {
       console.log(response.data.subjects)
       this.movieArr = response.data.subjects // 这里要强调一下这个this 箭头函数指的是它的父级也就是vue实例 然后不用箭头函数的话 this是一个undefined 无法.movieArr来给他赋值 这里要注意一下 我被坑了半天 希望小伙伴不要被坑
    })
   }
 }
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

vue2.0axios跨域和渲染如何使用

Vue.js怎麼讓圖片隨意拖動

以上是vue2.0 axios跨域和渲染有哪些需要注意的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn