Vue2 (配置代理、插槽) day-012

vue2项目从0搭建(二):配置代理,登录功能和菜单权限 vue2项目token校验和权限校验 阅读详情

一、配置代理

前端所使用的发送和接收请求的技术:

  •  xhr:俗称"小黄人",全称是 “XMLHttpRequest”
  •  jQuery:通过 $get 和 $post 来进行发送请求
  • Axios:基于 promise 的网络请求库(推荐)
  • fetch:下一代的 Ajax 技术,采用 Promise 方式处理数据
     

我们安装 axios 并且在 8080端口发送请求到 5000端口服务器,去哪数据会出现下面cros 问题

1-  代码如下:安装axios  并发送get请求
<template>
  <div id="root">
    <button @click="getStudents">获取学生信息</button>
  </div>
 
</template>

<script>
// 1- 安装 npm i axios 2-引入 axios 
import axios from "axios";

export default {
  name: "App",
  methods: {
    getStudents() {
      axios.get("http://localhost:5000/students").then(
        (reponse) => {
          console.log("请求成功", reponse.data);
        },
        (error) => {
          console.log("请求失败", error.message);
        }
      );
    },
  },
};
</script>

<style>
</style>
2-出现跨域问题

跨域问题:即我们违背了 “同源” 原则,也就是以下三个需要保持一致:

  • 协议名
  • 主机名
  • 端口号

解决跨域方法:

  • cors:在后端配置好(响应头)

  • jsonp:比较局限,需要前后端共同对接,并且只能处理 get 请求

  • 配置代理服务器

    • nginx
    • vue-cli

 

解决办法
1-方式一:

 1.优点:配置简单,请求资源时直接发给前端(8080) 即可
2.缺点:不能配置多个代理,不能灵活的控制请求是否走代理
3.工作方式:若按照上述配置代理,当请求了前端不存在的资源时,那么该请求会转发给服务器(优先匹配前端资源)

开启代理,vue.config.js 中配置

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave: false,
  //开启代理
  devServer: {
    proxy: 'http://localhost:5000'	
    // 该端口号与请求服务器的端口号一致
    // 注意:不是本地主机的端口号 8080,这里应该是 5000
}

})

修改请求端口为8080

getStudents() {
  axios.get('http://localhost:8080/students').then( reponse => {
    console.log('请求成功', reponse.data)
  },
  error => {
    console.log('请求失败', error.message)
  })
}
2-方式二

1.优点:可以配置多个代理,且可以灵活的控制请求是否走代理

2.缺点:配置略微繁琐,请求资源时必须加前缀

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave: false,
  //开启代理 方式一 
  //   devServer: {
  //     proxy: 'http://localhost:5000'	 // 该端口号与请求服务器的端口号一致  // 注意:不是本地主机的端口号 8080,这里应该是 5000 
  // }
  //方式二、
  devServer: {
    proxy: {
      // 设置api为前缀,表示只有以api为前缀的路由才进行配置代理服务器
      '/api': {
        target: 'http://localhost:5000',	// 代理路由的基础路径
        pathRewrite: { '^/api': '' }, // 这一步至关重要,将以api为前缀的请求路径的api置为空
        ws: true, // 用于支持wesocket,为默认值,可不加
        changeOrigin: true, // 用于控制请求头中的host值,添加之后,代理服务器对请求服务器响应的host为请求服务器的端口号,否则为代理服务器的端口号,默认值,可不加
      },
      '/demo': {
        target: 'http://localhost:5001',	// 代理路由的基础路径
        pathRewrite: { '^/demo': '' }, // 这一步至关重要,将以api为前缀的请求路径的api置为空
        ws: true, // 用于支持wesocket,为默认值,可不加
        changeOrigin: true, // 用于控制请求头中的host值,添加之后,代理服务器对请求服务器响应的host为请求服务器的端口号,否则为代理服务器的端口号,默认值,可不加
//changeOrigin设置为true时,服务器收到的请求头中的host为: localhost:5000changeOrigin设置为false时,服务器收到的请求头中的host为: localhost:8080changeOrigin默认值为true
      }
    }
  }
})

二、github查询案例

功能点击查询,拉去用户数据展示。

 main.js 安装事件总线


/*
main.js是整个项目的入口文件
*/

//引入 Vue
import Vue from 'vue'
//引入App组件,他是所有文件的父组件
import App from './App.vue'
Vue.config.productionTip = false



//创建Vue实例,vm
new Vue({
  render: h => h(App),
  beforeCreate(){
    //1-安装全局事件总线
    Vue.prototype.$bus = this
  }
}).$mount('#app')

 APP注入组件

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

<script>
import Search from './components/Serach.vue';
import List from './components/List.vue';
export default {
  name: "App",
  components:{
    Search,
    List
  }
};
</script>

<style lang="css">

</style>

 search组件,掉接口查询用户信息。通过事件总线发送userList给List组件展示。

<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="searchUsers">Search</button>
    </div>
  </section>
</template>

<script>
import axios from 'axios'
export default {
  name: "Search",
  data() {
    return {
      keyWord: "",
    };
  },
  methods: {
    searchUsers() {
      this.$bus.$emit("getUsers", {
        isFirst: false,
        isLoading: true,
        users: [],
        errMsg: "",
      });

      //模版字符串
      axios.get(`https://api.github.com/search/users?q=${this.keyWord}`).then(
        (response) => {
          console.log("请求成功", response.data.items);
          //3- $emit 触发自定义事件 getUsers
          this.$bus.$emit("getUsers", {
            isLoading: false,
            users: response.data.items,
            errMsg: "",
          });
        },
        (error) => {
          console.log("请求失败", error.message);
          this.$bus.$emit("getUsers", {
            isLoading: false,
            users: [],
            errMsg: "search failed",
          });
        }
      );
    },
  },
};
</script>

<style>
</style>

 List组件,绑定事件,接受emit 发送过来数据

<template>
  <div class="row">
    <!--5- 展示用户列表 -->
    <div
      v-show="info.users.length"
      class="card"
      v-for="p in info.users"
      :key="p.login"
    >
     
      <a :href="p.html_url" target="_blank">
        <img :src="p.avatar_url" style="width: 100px" />
      </a>
      <p class="card-text">{{ p.login }}</p>
    </div>
    <!-- 展示欢迎词 -->
    <h1 v-show="info.isFirst">欢迎使用</h1>
    <!-- 展示加载中 -->
    <h1 v-show="info.isLoading">加载中.......</h1>
    <!-- 展示错误信息 -->
    <h1 v-show="info.errMsg">{{ info.errMsg }}</h1>
  </div>
</template>

<script >
export default {
  name: "List",
  data() {
    return {
      info: {
        isFirst: true, // 是否展示欢迎语
        isLoading: false, // 是否显示正在加载中
        errMsg: "", // 错误信息
        users: [], // 用户列表
      },
    };
  },
  mounted() {
//3-绑定事件
    this.$bus.$on("getUsers", (dataObj) => {
      console.log("我是 List 组件,接受到数据:", dataObj);
      // 4- 使用扩展运算法来达到设置默认值的效果,当 dataObj 与 this.info 有同名的变量就会进行覆盖
      this.info = { ...this.info, ...dataObj };
      
    });
  },
  beforeDestroyed() {
    this.$bus.$off("getUsers");
  },
};
</script>

<style scoped>
.album {
  min-height: 50rem; /* Can be removed; just added for demo purposes */
  padding-top: 3rem;
  padding-bottom: 3rem;
  background-color: #f7f7f7;
}

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

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

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

二、vue-resouce 插件库

这个库是 vue 1.0 官方使用的,之后交给了其他团队维护,首选还是axios。

 1-先安装插件

npm install vue-resource

 2- main.js中引入插件,

//1- 引入插件

import VueResource from 'vue-resource'


//2- 使用插件

Vue.use(VueResource)

 3- 上面github搜索案例替换,this.$http.get()。

  methods: {
    searchUsers() {
      this.$bus.$emit("getUsers", {
        isFirst: false,
        isLoading: true,
        users: [],
        errMsg: "",
      });

      //模版字符串
      this.$http.get(`https://api.github.com/search/users?q=${this.keyWord}`).then(
        (response) => {
          console.log("请求成功", response.data.items);
          //3- $emit 触发自定义事件 getUsers
          this.$bus.$emit("getUsers", {
            isLoading: false,
            users: response.data.items,
            errMsg: "",
          });
        },
        (error) => {
          console.log("请求失败", error.message);
          this.$bus.$emit("getUsers", {
            isLoading: false,
            users: [],
            errMsg: "search failed",
          });
        }
      );
    },
  },

三、插槽

作用: 让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式了适用于 父组件 ===> 子组件

效果一:(组件遍历不同的分类)

APP组件

<template>
  <div class="container">
    <Category :title="美食" :listData="foods" ></Category>
    <Category :title="游戏" :listData="games"></Category>
    <Category :title="电影" :listData="films"></Category>
  </div>
</template>

<script>
import Category from "./components/Category.vue";

export default {
  name: "App",
  data() {
    return {
      foods: ["火锅", "烧烤", "小龙虾", "牛排"],
      games: ["红色警戒", "穿越火线", "劲舞团", "超级玛丽"],
      films: ["《教父》", "《拆弹专家》", "《你好,李焕英》", "《尚硅谷》"],
    };
  },
  components: {
    Category,
  },
};
</script>

<style lang="css">
.container {
  display: flex;
  justify-content: space-around;
}
</style>

 Category组件

<template>
    <div class="category">
  <h3>{{title}}分类</h3>
  <ul>
    <li v-for="(item,index) in listData" :key="index">{{item}}</li>
</ul>
</div>
 
</template>

<script>
export default {
  name:'Category',
  props:['listData','title']

};
</script>

<style>
.category{
    background-color:aqua;
    width: 200px;
    height: 300px;
}
h3{
  text-align: center;
  justify-content: space-around;
  background-color:chartreuse;
}
</style>
效果二: 默认插槽(组件遍历 图片 分类 视屏)

APP组件

<template>
  <div class="container">
    <Category :title="美食" :listData="foods">
      <img src="../public/img/1698224336158.jpg" alt="图片" />
    </Category>
    <Category :title="游戏" :listData="games">
      <ul>
        <li v-for="(g, index) in games" :key="index">{{ g }}</li>
      </ul>
    </Category>
    <Category :title="电影" :listData="films">
      <audio src="../public/video/蓄勢 ~ GEAR UP ~ - 采风乐坊.mp3" controls loop autoplay muted>蓄勢.mp3</audio>
    </Category>
  </div>
</template>

<script>
import Category from "./components/Category.vue";

export default {
  name: "App",
  data() {
    return {
      foods: ["火锅", "烧烤", "小龙虾", "牛排"],
      games: ["红色警戒", "穿越火线", "劲舞团", "超级玛丽"],
      films: ["《教父》", "《拆弹专家》", "《你好,李焕英》", "《尚硅谷》"],
    };
  },
  components: {
    Category
  },
};
</script>

<style lang="css">
.container {
  display: flex;
  justify-content: space-around;
}
audio{
  width: 100%;
}
img{
  width: 100%;
}
</style>

 Category

    <slot></slot>  标签来接受 AP组件中解析的<category>中的内容

<template>
  <div class="category">
    <h3>{{title}}分类</h3>
    <slot></slot>
  </div>
</template>

<script>
export default {
  name: "Category",
  props: ["title"],
};
</script>

<style>
.category {
  background-color: aqua;
  width: 200px;
  height: 300px;
}
h3 {
  text-align: center;
  justify-content: space-around;
  background-color: chartreuse;
}
</style>
效果三: 具名插槽

app组件   slot="center"  指的要放入的插槽

<template>
  <div class="container">
    <Category :title="美食" :listData="foods">
      <!-- 1- slot="center" 指的放置插槽的名称  -->
      <img slot="center" src="../public/img/1698224336158.jpg" alt="图片" />
      <div class="foot" slot="footer">
        <a slot="footer" href="http://www.baidu.com">更多美食</a>
      </div>
    </Category>

    <Category :title="游戏" :listData="games">
      <ul slot="center">
        <li v-for="(g, index) in games" :key="index">{{ g }}</li>
      </ul>
      <!-- 1- slot="footer" 指的放置插槽的名称  -->
      <div class="foot" slot="footer">
        <a href="http://www.baidu.com">单机游戏</a>
        <a href="http://www.baidu.com">多人游戏</a>
      </div>
    </Category>

    <Category :title="电影" :listData="films">
      <audio
        slot="center"
        src="../public/video/蓄勢 ~ GEAR UP ~ - 采风乐坊.mp3"
        controls
      >
        蓄勢.mp3
      </audio>
      <!-- 第二种写法 -->
      <!-- <template slot="footer"> -->
      <template v-slot:footer>
        <div class="foot">
          <a href="http://www.baidu.com">默认</a>
          <a href="http://www.baidu.com">金典</a>
          <a href="http://www.baidu.com">怀旧</a>
        </div>
        <h4>欢迎进来听歌</h4>
      </template>
    </Category>
  </div>
</template>

<script>
import Category from "./components/Category.vue";

export default {
  name: "App",
  data() {
    return {
      foods: ["火锅", "烧烤", "小龙虾", "牛排"],
      games: ["红色警戒", "穿越火线", "劲舞团", "超级玛丽"],
      films: ["《教父》", "《拆弹专家》", "《你好,李焕英》", "《尚硅谷》"],
    };
  },
  components: {
    Category,
  },
};
</script>

<style lang="css">
.container,
.foot {
  display: flex;
  justify-content: space-around;
  text-align: center;
}
audio {
  width: 100%;
}
img {
  width: 100%;
}
</style>

Category 组件定义插槽  <slot name="center"> </slot>

<template>
  <div class="category">
    <h3>{{title}}分类</h3>
    <!--2- slot name="" 指定 放到哪个插槽  -->
    <slot name="center"> 不放置数据默认显示本语句</slot>
    <slot name="footer"> 不放置数据默认显示本语句</slot>
  </div>
</template>

<script>
export default {
  name: "Category",
  props: ["title"],
};
</script>

<style>
.category {
  background-color: aqua;
  width: 200px;
  height: 300px;
}
h3 {
  text-align: center;
  justify-content: space-around;
  background-color: chartreuse;
}
</style>
 效果四:作用域插槽

category子组件中 定义插槽 绑定数据

<template>
  <div class="category">
    <h3>{{ title }}分类</h3>
    <!--1- 定义插槽,  2- 绑定数据 :foods="foods"  -->
    <slot :foods="foods" :games="games"></slot>
  </div>
</template>

<script>
export default {
  name: "Category",
  props: ["title"],
  data() {
    return {
      games: ["红色警戒", "穿越火线", "劲舞团", "超级玛丽"],
      foods: ["火锅", "烧烤", "小龙虾", "牛排"]
    };
  },
};
</script>

<style>
.category {
  background-color: aqua;
  width: 200px;
  height: 300px;
}
h3 {
  text-align: center;
  justify-content: space-around;
  background-color: chartreuse;
}
</style>

 APP组件 定义需要遍历的结构

注意:Vue 2.5 之后将原来的接收 dataObj 的属性名由原来的 scope 改成为 slot-scope,因此这两种方法现阶段都可以使用
同时为了书写方便,我们可以借助解构赋值去除掉前缀 dataObj(如下代码中注释)

<template>
  <div class="container">
    <Category>
      <!-- 2- 定义 slot-scope="dataObj"  遍历数据-->
      <template slot-scope="dataObj">
        <ul>
          <li v-for="(f, index) in dataObj.foods" :key="index">{{ f }}</li>
        </ul>
      </template>
    </Category>
    <Category>
      <template slot-scope="dataObj">
        <ol>
          <li v-for="(g, index) in dataObj.games" :key="index">{{ g }}</li>
        </ol>
      </template>
      <!-- Vue 2.5 之后将原来的接收 dataObj 的属性名由原来的 scope 改成为 slot-scope,因此这两种方法现阶段都可以使用
同时为了书写方便,我们可以借助解构赋值去除掉前缀 dataObj(该 dataObj 为自己定义),如下 -->
      <Category>
        <template slot-scope="{ foods }">
          <ul>
            <li v-for="(f, index) in foods" :key="index">{{ f }}</li>
          </ul>
        </template>
      </Category>
    </Category>
  </div>
</template>

<script>
import Category from "./components/Category.vue";

export default {
  name: "App",

  components: {
    Category,
  },
};
</script>

<style lang="css">
.container,
.foot {
  display: flex;
  justify-content: space-around;
  text-align: center;
}
audio {
  width: 100%;
}
img {
  width: 100%;
}
</style>

Vue 2.0 跨域代理解决方案 然而,在开发 Vue.js 应用程序时,我们经常需要与不同域上的 API 进行通信,因此跨域问题是我们常常需要处理的问题之一。通过简单的配置,我们可以将 API 请求转发到另一个域,以避免浏览器的跨域限制。首先,我们需要创建一个 Vue 项目。在创建项目的过程中,可以选择手动配置特性,确保选择了 Babel 和 Vue Router。在开发服务器启动后,你应该能够在浏览器中访问项目,并且 API 请求会被代理到指定的目标域。现在我们可以在 Vue 组件中发起 API 请求,并使用代理来避免跨域问题。 阅读详情

相关推荐

vue(2.x,3.0)配置跨域代理

主要介绍了vue(2.x,3.0)配置跨域代理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Vue-cli 配置代理服务

Vue-cli 配置代理服务 方法一: 在vue.config.js中添加如下配置: devServer:{ proxy: "http://localhost:5000" } 说明: 优点:配置简单,请求资源时直接发给前端(8080)即可。 缺点:不能配置多个代理,不能灵活的控制请求是否走代理。 工作方式:若按照上述配置代理,当请求了前端不存在的资源时,那么该请求会转发给服务器 (优先匹配前端资源) 方法二: 编写vue.config.js配置具体代理规则: module.exports = {

li_aoqi的博客 2492

三款云电脑实测:ToDesk、青椒云、顺网云谁更适合AIGC新手?附详细配置对比

本文针对AIGC新手,深度实测了ToDesk云电脑、青椒云和顺网云三款云电脑服务。通过对比上手门槛、内置生态、操作引导及成本,发现ToDesk云电脑凭借一键启动、丰富预置模型和直观引导,为新手提供了最接近“开箱即用”的零门槛AIGC创作体验,是快速入门AI绘画的高效选择。

assembly8low的博客 1089

Vue2——配置代理(解决ajax跨域问题)

使用vue脚手架解决ajax跨域请求。

mantou_riji的博客 3568

Gitlab+Jenkins+Docker+Harbor+K8s+Rancher集群搭建CICD平台

本文以诺依项目为例详细记录了Kubernetes集群的部署过程以及配套DevOps环境的搭建。主要内容包括:1) 配置8个节点的软硬件环境;2) 基础环境准备(网络、防火墙、Docker等);3) 三节点Kubernetes集群部署;4) GitLab代码仓库安装;5) Harbor私有镜像仓库搭建;6) Jenkins持续集成工具配置;7) 基于若依项目的CI/CD实践;8) Rancher集群管理工具部署。

hickman2023的博客 1197

【LabVIEW懒人系列教程-视觉入门】2.6LabVIEW模板匹配之创建模板

上期2.5在Labview软件框架中实现了模板匹配功能的运用,然而我们的模板图像是通过视觉助手创建出来的,在实际项目中这样做 ,难免有些不妥。所以,今天就给大家讲解一下,如何编写创建模板功能,模板图像的创建与加载需要注意一些什么。 模板图片的创建,大家可以理解为将图像中的一个特征区域扣下来,通过Labview函数进行信息学习,然后保存成带有图像信息的模板图。 具体做法,下面为大家演示一下 百度网盘视频链接:https://pan.baidu.com/s/1-zxcJBxPgk4t1Ej..

视觉龙哥 2162

Vue2的代理,路由以及通信能手VueX(下)

Vue2中的Ajax、路由、VueX通信以及常用组件库,至此Vue2到了尾声,Vue2的笔记也到这里结束了,可以通过三篇笔记进行复盘。

Yovvis的博客 1929

Yolov26 在 Rk3588 上的 Rknn Onnx 部署实践(c++)

本文介绍了YOLOv26在RK3588平台的C++推理部署方案。重点包括:1)扩展Ultralytics导出格式,新增RKNN_ONNX专用导出选项;2)重构Detect Head结构,使其更适合RKNN推理;3)提供C++侧后处理实现建议。该方案保留了Ultralytics训练生态,通过优化模型结构输出,将解码等操作移至C++端,充分发挥Rockchip NPU性能。适用于RK3588/RK356x等平台,需配合rknn-toolkit2使用,为YOLOv26的嵌入式部署提供完整解决方案。

qq_64366203的博客 2167

vue2的proxy代理解决跨域

【代码】vue2的proxy代理解决跨域。

m0_68427221的博客 2308

YOLOv13添加WDBB模块,map提升5.34!!,召回率提升6.55,准确率提升3.23

本文提出了一种基于YOLOv13改进的目标检测模型,通过引入WDBB模块显著提升了检测性能。实验结果表明,添加WDBB模块后,mAP提升11.34,召回率提升14.55,准确率提升3.23。文章详细介绍了模型移植方法,包括创建新的yaml配置文件、修改tasks.py和__init__.py文件,以及实现rep_block.py中的核心转换函数。改进后的模型通过深度卷积、通道注意力等模块优化了特征提取能力,同时保持了轻量化的特点。该工作为YOLO系列模型的性能提升提供了新的思路和技术实现。

FJN110的博客 2619

CarSim - 仿真汽车驾驶行为的完整源代码及描述

以上是多年收集的稀有软件CarSim的源代码和描述,借助CarSim提供的功能,用户可以准确地模拟和研究汽车的驾驶行为,为汽车设计、驾驶辅助系统等领域提供有价值的支持。是一款用于模拟汽车驾驶行为的稀有软件,它经过多年的收集和开发,提供了一套完整的源代码和相应的描述,能够准确地模拟真实世界中的汽车运动和操控。CarSim的源代码采用现代化的。

weixin_50547796的博客 288

vue2中的配置代理和路由的使用

上述代码的意思是,当请求路径以/api开头时,会被代理到http://localhost:3000地址,例如/api/user会被代理到http://localhost:3000/user。Vue.js 2中的路由是通过Vue Router实现的,它允许你在单页面应用(SPA)中管理应用的路由,实现页面之间的切换和导航。然后,在Vue应用的入口文件(通常是main.js)中导入Vue Router并将其挂载到Vue实例上。在Vue CLI中,你可以在项目根目录下的vue.config.js文件中配置代理。

2301_77661976的博客 2121

以太网MII、RMII、GMII、RGMII(三)

RMII接口收发的数据位宽为2bit,因此管脚数目大为减少,在高密端口PHY中应用较多,但是由于其是MAC和PHY共用一个参考时钟,接口之间的距离不能太远;一般的GMII接口都有两个发送参考时钟:TX_CLK和GTX_CLK,两者的方向是不一样的,前者有PHY提供(同MII),后者由MAC或外部参考时钟源提供,绝大多数GMII接口都是兼容MII接口的,在用作MII模式时,使用TX_CLK和8根数据线中的4根。MII接口中的接收时钟和发送时钟是分开的,而且都是由PHY芯片提供给MAC芯片的。

qq_42357877的博客 2322

vue2项目配置“代理”、“端口”、“打包名”、“使用@”、“图片压缩”

vue2项目配置“代理”、“端口”、“打包名”、“使用@”、“图片压缩”

bestyinjun的专栏 1765

YOLO格式数据集【数据增强】终极脚本 | 70+种顶级数据增强方法 | 可带标签增强

YOLO格式数据集【数据增强】终极脚本 | 70+种顶级数据增强方法 | 可带标签增强

Coding... 5493

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Vue2 和 Vue3 中的代理及环境变量配置

通过配置代理和使用环境变量,可以有效地解决 Vue 项目在开发和生产阶段的跨域问题和接口访问问题。在 Vue2 和 Vue3 中,虽然具体的配置方式可能会有所不同,但基本的思路是一致的。在实际项目开发中,可以根据项目的需求和特点,选择合适的配置方式,确保项目的顺利进行。以上是关于 Vue2 和 Vue3 中代理及环境变量配置的博客内容,希望对大家有所帮助。

m0_57836225的博客 1390

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

理解vue2脚手架“配置代理服务器”(附加:解决跨域)

理解vue2脚手架“配置代理服务器”; 解决跨域;

m0_70190404的博客 1588

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Vue2配置前端代理

在8080向5000请求数据cli+vue2。

一+一加1的博客 830

vue2,vue3跨域配置proxy代理,以及pathRewrite的一些问题,及获取真实请求地址

请求接口为:http://api.zhuishushenqi.com/cats/lv2/statistics。

qq_44766357的博客 5392

vue2知识点:数据代理

文章目录一、何为数据代理二、vue中的数据代理三、回顾Object.defineProperty() 一、何为数据代理 数据代理:通过一个对象代理对另一个对象中属性的操作(读/写) let obj = {x:100} let obj2 = {y:200} Object.defineProperty(obj2, "x", { get() { return obj.x }, set(value) { .

刘大猫 1770

vue2_vite.config.js的proxy跨域配置和nginx配置代理有啥区别?

vue proxy代理,nginx反向代理

编程知识分享,主打前端 3万+

你知道Vue2响应式的缺陷及对应proxy的优点吗?

你知道Vue2响应式的缺陷及对应proxy的优点吗?

qq_50260510的博客 704

vue2的vue.config.js中简单配置代理跨域

个人简单配置proxy代理跨域

a99101的博客 1万+

Vue2中的devServer.proxy配置详解

在上面的配置中,我们将所有以/api开头的请求代理到后端服务器。在Vue2中,devServer.proxy是一个非常重要的配置项,它允许开发者将某些特定的API请求代理到后端服务器,从而实现前后端分离的开发模式。为了解决这个问题,我们可以通过代理的方式将前端请求转发到后端服务器,从而实现前后端的通信。除了基本配置外,devServer.proxy还支持更多的高级配置选项,以满足更复杂的需求。在Vue2中,我们可以在vue.config.js文件中对devServer.proxy进行配置。

qq_45973155的博客 5155

第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)

第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)

刘大猫 688

vue2中的proxy代理

代理的作用是把 props 和 data 上的属性代理到 vm 实例上,这也就是为什么比如我们定义了data和 props,却可以通过 vm 实例访问到它(即在vue中我们直接通过this. 拿到对应的属性) vue2中通过一个代理函数proxy,代码如下 const sharedPropertyDefinition = { enumerable: true, configurable: true, get: noop, set: noop, } export function prox

m0_49159526的博客 2361
上一篇: Vue2 (动画效果)-day11
下一篇: Vue2(Vuex)--day13
syfjava
博客等级 码龄10年 453粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

syfjava

请博主喝杯蜜雪冰城

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值