vue项目打包app问题解决

一、后端接口无法访问问题

问题描述:apk已经制成,且app能打开运行,打开后,无法访问后端接口。不支持proxy的process.env.VUE_APP_BASE_API等转换代理方式,主要是跨域问题。

解决办法:使用axios时,baseURL不使用process.env.VUE_APP_BASE_API,直接使用IP/域名地址;即:baseURL: 'http://127.0.0.1:8080'。

const service = axios.create({

  // baseURL: process.env.VUE_APP_BASE_API,

  baseURL: 'http://x.x.x.x:8080',

  // 超时

  timeout: 10000

})

二、router无法跳转问题

问题描述:后端接口能访问,无法完成界面跳转,一直在首页(程序入口)。

解决办法:router的跳转模式将‘history’改为‘hash’;即 mode: 'hash'。

const router = new Router({

  // mode: 'history', // 去掉url中的#

  mode: 'hash',

  routes:

})

三、vue-router使用keep-alive相关问题与解决方案

问题描述:想用keep-alive缓存当前页面,跳转明细,返回后,仍然可以看到原封不动的数据与位置;但当前界面返回到主页面或者其他页面,或者注销账号重新登录,都会导致该页面有缓存的情况,即A->B,B->A(A有缓存,能接受);C->A(A也有缓存,不能接受)

备注:keep-alive使用方法(以下两步即可):

①在vue中找到router-view,修改如下(通过meta里面的keepAlive来判断是否需要缓存组件):

    <keep-alive>

      <router-view :key="$route.name" v-if="$route.meta.keepAlive" />

    </keep-alive>

    <router-view :key="$route.name" v-if="!$route.meta.keepAlive" />

②在router/index.js,添加meta属性,与path保持平级:

{

    path: '/A',

    component: () => import('@/views/A页面'),

    meta: {

         keepAlive: true  // 设置需要缓存

    }

}

PS:网上也有很多解决办法,修改router或router/index.js,使用beforeRouteLeave等方法,个人感觉改动太大,有些麻烦,就没去用这种方法了;

解决办法:

若C->A,A不需要缓存,直接在A中使用vue的钩子函数activated():当组件被激活时vue会自动调用;简单来说,就是需要缓存的时候,B组件跳转至A,带上参数即可,在钩子函数里判断该参数,通过配合初始化操作来实现是否销毁组件;以下两步实现:

在A页面的activated()函数内,直接将本页面做一个类似于初始化的操作,将请求数据的条件清空,或者直接将数据清空重置;

 

其他页面跳转至A页面,正常使用push即可,而跳转回来需要A组件不销毁,例如:B组件内,不使用routes.back()或go(-1)方法,直接使用push,带上特定的参数即可在A页面接收到B带过来的特定flag,在钩子函数activated()内判断一下,是不是B的flag值,是就不做第一步处理,否则做第一步初始化操作

B组件跳转A:

其他组件跳转A: 

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一茗道人nview

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值