在jquery项目中嵌入vue项目的方法,以及遇到的问题

因为我们知道vue项目打包完成后,就是一个index.html

我们在jquery项目中使用iframe嵌入vue项目

1.创建vue项目,根据路由写页面

2.将vue打包后的dist文件夹,复制到你的jquery目录下

3.配的地址跟自己vue项目访问地址一致即可,例如:“traffic/#/notice”

var html = '<div id="item' + gridItemIndex + '" class="item" style="background-color:#fff;">' +

                '<div class="item-content"><iframe width="' + awidth + '" height="' + aheight + '" id="itemIframe' + gridItemIndex + '" src="' + moduleUrl + '" frameborder="0"></iframe></div></div>';

            $('.grid').append(html);

4.然后将项目包丢给后台即可,或者让后台将地址指向你的环境,类似于(我的任务,日程,公告都是vue)

当开发过程中,常见问题

1.需要开发的过程中实时查看在jquery的项目中vue的页面情况,直接将地址指全(指向vue访问地址)

obj.moduleUrl=‘traffic/#/notice’ || ‘traffic/#/myTask’ || ···

var moduleUrl = 'http://ip:port/' + obj.moduleUrl

但是这样会遇到问题:当你需要取父页面在localstorage中的数据时,取不到,出现跨域

                                    当你接口请求时,也会出现跨域

这时候需要后台协助,或者你本地自己起了ngnix,(配个地址即可)

location ^~ /traffic/{
#alias D:/workspace/portal/dyportalweb/webapp/;
proxy_pass http://ip:port/;
#alias C:/Users/Administrator/Desktop/dyportalweb/;
expires 5d;
}

我们在vue.config.js需要配置

devServer: {
    open: process.platform === "darwin",
    host: "自己的ip",
    port: 自己的端口,
    https: false,
    hotOnly: false,
    proxy: {
      "/gateway": {
        target: "http://ip:port/",
        ws: true,
        changeOrigin: true,
        pathRewrite: {
          // '^/gateway': '/gateway',
          //   '^/gateway': ''
        }
      }
    },
    historyApiFallback: true,
    disableHostCheck: true,
    before: () => {}
  }

取值例如

2.我们vue是根据路由来判断进入那个页面的,有些公共参数是分页面请求的,vue项目嵌入iframe中,用watch监听发现from是空的,to才是你需要的路由信息(mouted中获取的路由this.$route.meta是undefined,而且组件的mouted方法先走导致报错)

所以我们使用watch监听路由变化根据meta信息判断请求数据,有数据再去渲染组件

 watch: {
    $route(to, from) {
      if (to.meta.isTask){
        this.initSwitch()
        this.getUrlByCode()
      }else{
        this.pageReady = true
      }
    },
  },
<router-view v-if="pageReady" />

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值