首页 > 其他分享 >vue2-代理服务器&插槽

vue2-代理服务器&插槽

时间:2024-11-21 17:55:59浏览次数:1  
标签:请求 插槽 配置 代理 代理服务器 vue2 组件

解决跨域问题

配置代理服务器

代理服务器位于前端应用(客户端)和真实的后端服务器之间。当配置了代理服务器后,前端应用的请求不再直接发送到后端服务器,而是发送到代理服务器。代理服务器在接收到请求后,会根据预先配置的规则将请求转发到真正的后端服务器。例如,在 Vue 项目的开发服务器配置中,如果前端应用的请求路径是以/api开头,代理服务器可以将这个请求转发到http://backend - server - address对应的后端服务器上

cli文档

  1. 方式一:只能配置一个代理,不能灵活配置走不走代理

    优点:配置简单,请求资源时直接发给前端(8080)即可。

    缺点:不能配置多个代理,不能灵活的控制请求是否走代理。

    工作方式:若按照上述配置代理,当请求了前端不存在的资源时,那么该请求会转发给服务器 (优先匹配前端资源)

    // vue.config.js
    const { defineConfig } = require('@vue/cli-service')
    module.exports = defineConfig({
      transpileDependencies: true,
      // 开启代理服务器
      devServer:{
        // 开启8888端口的代理
        proxy:"http://localhost:8888"
      }
    })
    
    
  2. 方式二:可以配置多个代理,可以灵活配置走不走代理

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

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

    const { defineConfig } = require('@vue/cli-service')
    module.exports = defineConfig({
      transpileDependencies: true,
    
    
      devServer:{
        proxy:{
          // 如果请求的前缀带api,则触发该代理转发,否则不触发代理转发
          // http://localhost:8888/前缀/xxxxxxx
          "/api":{
            // 转发的服务器
            target:"http://localhost:5001",
            // 是否重写路径 {"正则规则":""} ,如果不写 默认以带前缀的url进行请求,http://localhost:5001/前缀/xxxxxxx
            // 使用正则把前缀替换为空,则请求URL 不带前缀 ,http://localhost:5001/xxxxxxx
            pathRewrite:{"^/api":""},
            ws:true, // 用于支持websocket
            changeOrigin:true // 用于控制请求头中的host值 是转发服务器地址还是真实服务器地址
    
    
    }
    
        }
      }
    })
    
    
    
    

插槽

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

默认插槽

默认插槽一个组件如果有多个,有多少个插槽,数据会重复多少份(插槽数*插槽数的数量的重复)

<!-- Category组件(子组件)-->
<template>
  <div class="box">
    <h1>{{ title }}</h1>
    <ul>
      <li v-for="(data,index) of dataList" :key="index">{{ data }}</li>
    </ul>
    <!-- 定义一个插槽 -->
    <slot></slot>
  </div>
</template>
<!-- App组件(父组件) -->
    <Category title="1" :dataList="[1,2,3]">
      <!-- 在组件标签内写对应内容,会显示在子元素slot插槽定义的地方-->
      <!-- 如果要给插槽的代码设置样式,设置父组件内-->
      <h2>哈哈哈哈</h2>
    </Category>
具名插槽

一个组件可以有多个具名插槽,会根据名字插入代码

  1. 子组件
 <!-- 子组件定义一个插槽,名字是h1Text -->
    <slot name="h1Text"></slot>
  1. 父组件使用slot
<!-- 父组件在指定名字插槽插入代码-->
   <Category title="1" :dataList="[1,2,3]">
     <!--在name= h1Text的插槽里面插入代码-->
     <!-- 如果插槽名字是表达式or变量-->
      <h2 slot="h1Text">哈哈哈哈</h2>
    </Category>
  1. 父组件使用v-slot
<!-- v-slot指定插槽,只能在 template 标签使用-->
<Category title="1" :dataList="[1,2,3]">

    <template v-slot:h1Tet>
        <h2 slot="h1Text">哈哈哈哈</h2>
   </template>
</Category>
作用域插槽

数据在组件的自身,但根据数据生成的结构需要组件的使用者来决定。(数据在子组件中,但使用数据所遍历出来的结构由父组件决定)

  1. 子组件
<script>
export default {
  // eslint-disable-next-line vue/multi-word-component-names
  name: "Category",
  data() {
    // 定义了一个dataList数组
    return {"infoList": [1, 2, 3, 4, 5]}
  }

}
</script>

<template>
  <div class="box">
    <!--   定义插槽,将dataList传递给插槽的使用者 -->
    <slot v-bind:infoList="infoList" name="context"></slot>
  </div>
</template>
  1. 父组件
<template>
  <div class="container">
    <Category>
      <!--      作用域插槽必须使用template标签 -->

      <!--    vue2.6废弃了slot-scope  -->
      <!--    vue2.5废弃了scope  -->
      <!--       v-scope -->
      <!-- vue2.6以上使用v-slot:插槽名字="要使用的数据" -->
      <template v-slot:context="infoList">
        <!--  这里收到的数据是一个对象 {infoList:[xxxxxxx]}-->
        <ul>
          <li v-for="(info,index) of infoList.infoList" :key="index">{{ info }}</li>
        </ul>
      </template>
    </Category>


  </div>
</template>

标签:请求,插槽,配置,代理,代理服务器,vue2,组件
From: https://www.cnblogs.com/Mickey-7/p/18561246

相关文章

  • 推荐 vue2、vue3 中功能最强大的表格组件,性能最强大的表格组件推荐、可编辑表格推荐
    vxe-table是一个vue的表格组件,支持可编辑和虚拟滚动高性能表格,公司使用了几年的表格,grid渲染器扩展功能非常强大。[email protected]@4.9.3//...importVxeUIfrom'vxe-pc-ui'import'vxe-pc-ui/lib/style.css'importVxeUITablefrom'vxe-table'......
  • vue2使用vueX@2版本和Vue3使用pinia
    vue2vue3使用Vuex3vue3使用pinia......
  • vue2-基础核心
    vue简介动态构建用户界面的渐进式JavaScript框架vue的特点:遵循MVVM模式采用组件化模式,提高代码复用率,让代码更好维护声明式编码,无需直接操作DOM,提高开发效率,编码简洁、体积小,运行效率高本身只关注UI,也可以引入其他三方库开发项目使用虚拟DOM+优秀的Diff算法,尽......
  • 【Vue2】计算属性computed究竟有什么魅力?
    前言        在Vue2的体系中,计算属性computed可谓是一个十分重要的工具,不仅能够帮助我们简化计算逻辑,而且能够优化应用的性能,相关问题在面试中也经常被问到。那么computed计算属性究竟有什么魅力呢,接下来随作者一起进入computed相关知识的分享吧!概念规则定义  ......
  • vite4+vue2+vant2+less构建项目,按需加载定制主题配置说明
    步骤1:安装vant2、consola、less、vite-plugin-style-import说明:因为vant2需要consola,所以必装;安装加载vant组件样式,必装:vite-plugin-style-import,版本注意是2.0以上 步骤2:vite.config.js配置://vite.config.jsimportfsfrom'node:fs';importpathfrom'path';i......
  • vue2 验证码
    StaticVerify.vue<template><canvasref="canvasRef"class="verify":width="width":height="height"@click="drawCode"></canvas></template><script>exportdefault{......
  • 移动端Vue2实现文件图片上传功能
    基于Vue2 +Vant2组件库实现:废话不多说,直接看代码:主要代码:methods:{//上传图片之前的操作beforeRead(file){letarr=file.name.split('.');letfileType='.'+arr[arr.length-1].toLowerCase();con......
  • vue2-组件化编程
    模块:向外提供特定功能的js呈现组件:用来实现局部(特定)功能效果的代码集合模块化:当应用中的js都以模块来编写的,那这个应用就是一个模块化的应用组件化:当应用中的功能都是多组件的方式来编写的,那这个应用就是一个组件化的应用编写组件-非单文件组件非单文件组......
  • vue2-基础核心
    vue简介vue中文官网动态构建用户界面的渐进式JavaScript框架vue的特点:遵循MVVM模式采用组件化模式,提高代码复用率,让代码更好维护声明式编码,无需直接操作DOM,提高开发效率,编码简洁、体积小,运行效率高本身只关注UI,也可以引入其他三方库开发项目使用虚拟DOM+优秀的Diff算......
  • 10分钟入门vue2!!
    概念:Vue是用于构建用户界面的渐进式(就是学一点就能够用一点)框架,总的来说,就是基于数据来构建用户页面,以便于用户看懂。Vue的两种使用方式:1.核心包开发2.核心包加插件加工程化开发1.Vue的基础语法1.创建第一个Vue实例准备容器div引包<scriptsrc="https://cdn.jsdelivr.......