Vue中信息订阅与发布和配置代理服务器的使用和原理

这篇具有很好参考价值的文章主要介绍了Vue中信息订阅与发布和配置代理服务器的使用和原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

信息订阅与发布

  • 全局事件总线和信息订阅与发布一样都是实现任意组件的通信。常用的是全局事件总线

  • 信息订阅与发布借用第三方库pubsub实现任意组件的通信

  • 安装pubsub

  • npm i pubsub-js
  • 下列代码为MyHeader组件订阅了一份信息,MyFooter负责传递信息给MyHeader

  • <template>
        <div>
            <h2>名字:{{ name }}</h2>
            <h2>地址:{{ address }}</h2>     
        </div>
    </template>
    ​
    <script>
    // 引入第三方的库pubsub。引入之前需要npm i pubsub-js
    import PubSub from 'pubsub-js';
    export default {
        name: 'MyHeader',
        data(){
            return {
                name:'李四',
                address:'花果山',
            }
        },
        mounted(){
            // subscribe有订阅的意思。此处为订阅hello信息,data可以理解为邮箱等待信息的传入
            // PubSub.subscribe()结果是一个id和定时器输出的结果一致,用变量接收PubSub.subscribe()的结果。
            // PubSub.subscribe()括号内的函数需要写成箭头函数,这样this才是VueComponent。普通函数输出的this是第三方库的,vue不承认
            // 回调函数有两个值,第二个值才是传过来的值。也就是(msgName,data)括号中第一个参数是事件名hello,第二个参数才是等待传过来的值
             this.pubId = PubSub.subscribe('hello', (msgName,data) => {
                console.log('有人发布hello的消息,hello信息的回调执行了,', msgName, data);
            })
        },
        //用this.pubId来获取该订阅,用于销毁。
        beforeDestroy(){
            //通过unsubscribe来取消订阅
            PubSub.unsubscribe(this.pubId)
        }
    }
    </script>
  • 触发点击事件发布信息给MyHeader

  • <template>
        <div>
            <h2>名字:{{ name  }}</h2>
            <h2>地址:{{ address  }}</h2>
            <button @click="sendHeaderMag">发送信息给head</button>
        </div>
    </template>
    ​
    <script>
    import PubSub from 'pubsub-js';
    export default {
        name: 'MyFooter',
        data(){
            return {
                name:'张三',
                address: '魔仙堡'
            }
        },
        methods:{
            // 发送信息给MyHeader
            sendHeaderMag(){
            //此处发布hello信息,将值name传递给MyFooter。因为MyFooter订阅了hello信息
            PubSub.publish('hello', this.name)
            }
        }
    }
    </script>
     

配置代理服务器

  • 假设目前有两个端口的服务器,一个为前端的8080另一个为后端的5000。

  • 配置单个代理服务器发出请求有两种情况 1、发出请求的xxx在脚手架文件中的public已经存在时,则不会向5000服务器发出请求 2、发出请求的xxx在脚手架文件中的public未存在时,才向5000服务器发出请求

  • 配置单个代理服务器的缺点:不能配置多个代理服务器,不能灵活的控制请求是否走代理

  • 配置单个代理服务器的优点:配置简单,请求的资源时直接发给前端(8080)即可

  • 下面整段代码在vue.config.js中。方式一为配置单个代理服务器的代码,方式二为配置多个代理服务器的代码

  • 在脚手架中vue.config.js文件开启代理服务器

  • //module.exports 的意思是允许从一个文件中导出内容,以便其他文件可以引入并使用这些内容。
    module.exports = {
      pages: {
        index: {
          entry: 'src/main.js',
        }
      },
      /*方式一
      //开启代理的服务器。
      //开启后代理服务器需要重新启动脚手架
      devServer: {
      // proxy有代理的意思,开启代理服务器之后直接干活。故代理的端口写的是5000而不是8080
        proxy: 'http://localhost:5000'
      }
      */
      //方式二
      devServer: {
        // '/boyboy'为地址前缀。
        // 地址前缀作用:1、用于判断是否请求5000服务器 2、用于创建多个代理服务器。例如再开启一个demo代理服务器:'/demo':{}
        '/boyboy': {
          // 当代理服务器向5000服务器请求数据时,前端的8000服务器和代理服务器都知道/boyboy,但5000服务器是没有/boyboy的,故用pathRewrite将/boyboy去掉后再传5000服务器才会承认将数据返回。
          
          target: 'http://localhost:5000',
          pathRewrite: {'^/boyboy':''},
          //ws用于支持websocket
          ws: true,
          //changeOrigin用于改变代理服务器的端口号。当5000服务器问代理服务器的端口号时,true代理服务器和5000的端口号一致,false端口号不一致
          changeOrigin: true
        }
      }
      
    }
    ​
  • 设置代理服务器的原因:

    如果8080直接向5000请求数据会出现跨域的问题。故设置了可以和5000的服务器通信的代理服务器8080。因为代理服务器和5000服务器通信用http请求即可,没有使用axios不会出现跨域问题

  • 8000服务器请求数据的过程:

    8080服务器向代理服务器请求,代理服务器向5000服务器请求,5000服务器就可以返回数据给代理服务器,代理服务器再返回给8080服务器

  • 下面为App组件需要引入axios异步通信文章来源地址https://www.toymoban.com/news/detail-775999.html

  • <template>
      <div id="app">
        <router-view/>
      </div>
    </template>
    <script>
    import axios from 'axios';
    export default {
      name: 'App',
      components: {MyFooter,MyHeader},
      methods:{
        getMyfooter(){
          /* 方式一
          //axios.get()可以理解为8080服务器找谁请求数据,那肯定找8080代理服务器。xxx的位置为代理服务器请求5000服务器的数据。如果请求的是5000服务器的数组,xxx就是数组名
          axios.get('http://lolcalhost:8080/xxx').then(
            response => {
              console.log('请求成功',response.data);
            },
            error => {
              console.log('请求失败',error.message);
            }
          )
          */
          // 方式二
          // 如果需要请求5000服务器则,“/boyboy”放置的位置在8080端口名的后面即可,不请求5000服务器则不用加上地址前缀。方式二解决方式一访问服务器不灵活的问题。
          axios.get('http://localhost:8080/boyboy/xxx').then(
            response => {
              console.log('请求成功',response.data);
            },
            error => {
              console.log('请求失败',error.message);
            }
          )
        }
      }
    }
    </script>

到了这里,关于Vue中信息订阅与发布和配置代理服务器的使用和原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue配置代理服务器proxy 多种方法

    在Vue项目中配置代理服务器可以通过以下几种方法实现: 在Vue项目的根目录下创建一个vue.config.js文件,并添加以下代码: 上述代码中,我们使用 devServer 配置项来配置代理服务器。其中 proxy 属性用于配置代理的规则, /api 表示需要代理的接口路径。 target 属性表示代理的目

    2024年02月12日
    浏览(62)
  • Vue 3中的反向代理 和如何在服务器配置反向代理

    如何在Vue 3项目中配置反向代理,让前端开发变得爽到爆!还有个小插曲,Vite为我们提供了更简单的方式,就像找对象一样直接。 首先,我们来谈谈反向代理是什么。简单来说,反向代理就像是前端和后端之间的婚姻介绍所。前端需要向后端请求数据,但由于某些原因(比如

    2024年04月13日
    浏览(41)
  • 使用Vue脚手架配置代理服务器的两种方式

    本文主要介绍使用Vue脚手架配置代理服务器的两种方式 注意:Vue脚手架给我们提供了两种配置代理服务器的方式,各有千秋,使用的时候只能二选一,不能同时使用 除了cros和jsonp,还有一种代理方式,这种用的相对来说也很多, 一般代理服务器 这个概念很好理解,相当于生

    2024年02月02日
    浏览(69)
  • vue2 vue3 配置代理 服务器返回404- 500的解决思路

    一、服务器返回500拒绝请求 1,服务器的服务没有起来 2,vue本地的代理地址填写错误,可能代理到别家的服务器了 正确的写法如下:(主要体现在ip地址和端口是否错误,当然也需要检查是否多了字母及符号。) http://112.59.21.18:8080 二、如果返回500,未找到页面404,说明是接口

    2024年02月16日
    浏览(59)
  • Nginx 详细配置(如:vue配置history刷新不404,https配置,配置代理等等,服务器配置)

    1.安装 Nginx:首先,确保您的服务器上已经安装了 Nginx。如果没有安装,可以通过包管理器(如apt、yum等)进行安装。或者在官网安装对应版本管理,官网下载地址:https://nginx.org/en/download.html 不同的版本不同的安装方法,自行百度 2.配置 Nginx:找到 Nginx 的配置文件(通常位

    2024年02月17日
    浏览(52)
  • 物联网云智能开发—MosQuitto服务器的安装 测试 订阅&发布及加密教程

    官方介绍 Eclipse Mosquitto是一个开放源码(EPL/EDL许可)消息代理,它实现了MQTT协议版本5.0、3.1.1和3.1。mosquitto是轻量级的,适用于所有设备,从低功率单板计算机到全服务器。MQTT协议提供了使用发布/订阅模型执行消息传递的轻量级方法。这使得它适用于物联网消息传递,如低功

    2024年04月28日
    浏览(37)
  • 从零开始用Nodejs搭建一个MQTT服务器,并且用stm32通过esp8266进行消息订阅和发布

    最近在做一个物联网项目,需要用到服务器进行数据的存储和数据的请求和发送,之前我用过onenet平台上的http服务,虽然能通过get和post请求进行数据的提交和发送,但是平台上的数据发生改变却不能主动推送给esp8266,与我此次的项目不符合,所以pass。然后我了解了下mqtt协

    2024年02月04日
    浏览(52)
  • 配置代理服务器

        俩台服务都准备完成 现在主要用来发起请求的第三方库都是axios   先下载引入axios  出现跨域问题,注意的一点是服务器是拿到数据,但是并没有返回 解决跨域问题 1.cors 这要麻烦后端人员,就是在响应数据时设置一个特殊的响应头,让浏览器能直接拿到 2.jsonp script s

    2024年01月16日
    浏览(39)
  • GIT配置代理服务器

    开启v2ray后,默认端口是10808 对于git的使用,可以配置相应的代理,具体如下: socks代理与http代理不能同时配置,因为config的key相同,会造成覆盖 配置完成后,可以通过 git config --list 查看配置 当不需要代理的时候,可以使用如下命令进行删除:

    2024年02月16日
    浏览(49)
  • vue 如何发布并部署到服务器

    一般情况npm run build即可 从而生成vue代码直接放到服务器即可 这里的具体情况要看package.json里面的配置从而使用命令 会生成dist就是该项目的发布包    

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包