Maison > interface Web > js tutoriel > À quoi devons-nous prêter attention dans le cross-domaine et le rendu de vue2.0 axios ?

À quoi devons-nous prêter attention dans le cross-domaine et le rendu de vue2.0 axios ?

php中世界最好的语言
Libérer: 2018-03-29 09:31:19
original
1646 Les gens l'ont consulté

Cette fois, je vais vous apporter ce à quoi vous devez faire attention dans le cross-domain et le rendu de vue2.0 axios. Voici les précautions dans le cross-domain et le rendu de vue2.0 axios. cas pratiques. Jetons un coup d'oeil.

(Scaffolding vue-cli utilisé)

Première étape : utilisez la déclaration suivante dans main.js en utilisant

import axios from
'axios';
Vue.prototype.$axios=axios;
Copier après la connexion

Ensuite, dans d'autres composants vue, vous pouvez appeler this.$axios et utiliser

Étape 2 : Configurer proxyTable dans le webpack (index sous config .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'即可
}
}
},
Copier après la connexion

Étape 3 :

Essayez-le, le cross-domain est réussi, mais veuillez noter Oui, il s'agit simplement d'un problème inter-domaines résolu dans l'environnement de développement (dev). S'il est réellement déployé sur le serveur dans l'environnement de production, il y aura toujours des problèmes inter-domaines s'il ne provient pas de la même source. le port du serveur que nous avons déployé est 3001, ce qui nécessite un débogage conjoint du front-end et du back-end.Chapitre Pour le front-end en une étape, nous pouvons le tester séparément dans les environnements de production et de développement dans config/dev.env.js et prod. env.js, c'est-à-dire que dans l'environnement de développement/production, configurez respectivement l'adresse API_HOST demandée. Dans l'environnement de développement, nous utilisons l'adresse proxy api configurée ci-dessus et utilisons l'adresse d'interface normale dans l'environnement de production, donc configurez-la comme ceci.

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

Bien sûr, vous pouvez directement demander http://api que ce soit en environnement de développement ou de production douban.com. Après la configuration, le programme déterminera automatiquement s'il s'agit d'un environnement de développement ou de production pendant les tests, puis fera automatiquement correspondre API_HOST. Nous pouvons utiliser process.env.API_HOST dans n'importe quel composant pour utiliser des adresses telles que

instance.post(process.env.API_HOST+'user/login', this.form)
Copier après la connexion

. puis deuxièmement, configurez simplement cros cross-domain sur le serveur backend, qui est access-control-allow-origin : * signifie autoriser tous les accès. Pour résumer : dans l'environnement de développement, notre front-end peut configurer un agent proxy pour inter-domaines. Dans un environnement de production réel, nous avons toujours besoin de la coopération du back-end. Un certain expert a déclaré : Cette méthode n'est pas facile à utiliser dans ie9 et versions antérieures. Si la compatibilité est requise, le meilleur moyen est d'ajouter un proxy au port du serveur sur le backend. L'effet est similaire au proxy webpack pendant le développement.

Étape 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>
Copier après la connexion

Je pense que vous maîtrisez la méthode après avoir lu le cas présenté dans cet article. veuillez faire attention au site Web chinois php Autres articles connexes !

Lecture recommandée :

Comment utiliser vue2.0axios multi-domaines et le rendu

Comment faire glisser des images librement avec Déplacement Vue.js

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal