ホームページ > 記事 > ウェブフロントエンド > vue2.0axios クロスドメインとレンダリングの使用方法
今回はvue2.0axiosのクロスドメインとレンダリングの使い方と、vue2.0axiosのクロスドメインとレンダリングを使用する際の注意点を紹介します。以下は実際のケースですので見てみましょう。
(Scaffolding vue-cli を使用)
ステップ 1: main.js で次の宣言を使用します
import axios from 'axios'; Vue.prototype.$axios=axios;
その後、他の vue コンポーネントで this.$axios を使用できます
ステップ 2: 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'即可 } } },
ステップ 3:
試してみます。クロスドメインは成功しますが、これはクロスドメインを解決する開発環境 (dev) のみであることに注意してください。 -ドメインの問題。本番環境では、実際にオリジナル以外のソースからサーバーにデプロイされている場合、クロスドメインの問題が依然として発生します。たとえば、デプロイしたサーバーのポートは 3001 であり、これには共同デバッグが必要です。最初のステップでは、フロントエンドと開発環境を別々にテストできます。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 開発環境または本番環境に関係なく。構成後、プログラムはテスト中に開発環境か運用環境かを自動的に判断し、任意のコンポーネントで process.env.API_HOST を使用して
instance.post(process.env.API_HOST+'user/login', this.form)
などのアドレスを使用できます。ステップでは、バックエンドサーバーを設定します。cros はクロスドメインにすることができます。つまり、access-control-allow-origin: *すべてのアクセスを許可します。要約すると、開発環境では、フロントエンドがクロスドメインにプロキシを構成できます。実際の運用環境では、バックエンドの協力が必要です。ある専門家は、「この方法は ie9 以下では使いにくいです。互換性が必要な場合、開発中に Webpack プロキシと同様の効果が得られるように、バックエンドのサーバー ポートにプロキシを追加するのが最善の方法です。」と述べています。
ステップ 4:
<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 中国語 Web サイトの他の関連記事に注目してください。
推奨書籍:
vue-router のビルド時にルーティング ページが表示されない場合の対処方法
以上がvue2.0axios クロスドメインとレンダリングの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。